2013-12-16 13 views
7

Ich bin neu bei SailsJs und Socket IO. Ich möchte das folgende Socket-IO-Beispiel in Sailsjs ausführen. Auf der Serverseite muss ich den folgenden Code ausführen. Aber ich weiß nicht, wo ich diesen Code platzieren soll.
Sailsjs Socket IO

 
var io = require('socket.io').listen(80);

io.sockets.on('connection', function (socket) { socket.emit('news', { hello: 'world' }); socket.on('my other event', function (data) { console.log(data); }); });


Ich bin mir bewusst, dass ich dies innerhalb der Cntroller-Funktion platzieren kann, aber es wird Listener zu jeder Anfrage hinzufügen, die ich nicht will.

Client Side:

 


    var socket = io.connect('http://localhost'); 
    socket.on('news', function (data) { 
    console.log(data); 
    socket.emit('my other event', { my: 'data' }); 
    }); 

Zeigen Sie mir, wo die Server-Seite Code in sailsjs zu setzen und mir helfen, die oben socketIO Beispiel auszuführen.

+3

Die sails.js Implementierung Routen aller seiner socket.io Anfragen * bis * die Express.js Schnittstelle sieht . Schauen Sie [hier] (http://sailsjs.org/#!documentation/sockets) nach, um zu erfahren, wie Sockets mit Sails zu implementieren sind; Obwohl sie auch die systemeigenen Socket.io-Steuerelemente unterstützen, ist dies wahrscheinlich nicht der beste Startpunkt. – brandonscript

+0

@ r3mus Ich stimme zu.Ich muss nur wissen, wo dieser native SOCKET.IO-Server-Code in sailsjs ausgeführt wird. Danke für deine Antwort. Geschätzt. – Dinesh

+1

Ich würde ein einfaches Segelprojekt erstellen und den Code durchsehen, um zu sehen, wo Sockets konfiguriert sind. TBH Ich habe mit Sails noch kein Standard-Socket-Zeug gemacht. – brandonscript

Antwort

6

Nun, Ihr Code schlägt vor, Sie möchten etwas auf connection tun.

Es gibt eine Datei bei /config/sockets.js, die Funktionen für connect und disconnect eingebaut hat, vielleicht suchen Sie dies.

Wenn Sie nicht, dann werden Sie es in einen Controller "Aktion" setzen möchten, wenn Sie genauer darüber nachdenken, was Sie erreichen möchten, dann werden Sie wahrscheinlich eine Aktion benötigen, die Sie einmal aufrufen, um damit umzugehen für dich.

Wenn Sie am Ende versuchen, aus der sockets.js Datei dann sollten Sie etwas, das wie dieses tatsächlich

onConnect: function(session, socket) { 
    socket.emit('news', { hello: 'world' }); 
    socket.on('my other event', function (data) { 
    console.log(data); 
    }); 
// By default: do nothing 
// This is a good place to subscribe a new socket to a room, inform other users 
// that someone new has come online, or any other custom socket.io logic 
} 
+0

Was ist, wenn Sie eine Menge von socket.on Funktionen haben, die Sie hineinlegen möchten? Haben Sie viel Code in OnConnect langsam jede Socket-Verbindung? Gibt es einen anderen Ort, an dem dieser Code eingefügt werden kann? (aber nicht Controller) ist es zum Beispiel möglich, diesen Code in sockets.js, aber außerhalb von OnConnect? – jantar

+0

@jantar soweit ich weiß, dass Sie jede einzelne "socket.on" -Funktionen in der connect-Funktion haben müssen, gibt es keinen anderen Weg, es zu tun, auch ohne sails.js – iConnor

+0

@iConnor, Können Sie sich ansehen diese Frage ? http://stackoverflow.com/questions/37129766/how-to-use-sails-io-js-version-0-11-3-in-node-server –

Verwandte Themen