2014-06-17 10 views
24

Sto usando socket.io e lo stack Mean per un'applicazione web. Ho avviato il server per socket sulla porta 3006 ..io.on ('connessione', ...) vs io.sockets.on ('connessione', ...)

var http = require('http').createServer(app); 
http.listen(3006); 
var io = require('socket.io').listen(http); 

Entrambi sembrano funzionare sulla connessione.

io.on('connection', function (socket) { 
    console.log('Socket succesfully connected with id: '+socket.id); 
}); 

e ...

io.sockets.on('connection', function (socket) { 
    console.log('Socket succesfully connected with id: '+socket.id); 
}); 

Qual è la differenza tra io.on e io.sockets.on e quale dovrei usare il collegamento prima volta ..?

Anche se socket.on npm page utilizza io.on perché è lavora per io.sockets.on

+1

Non al 100%, ma penso che sia solo un alias. Come con 'io.sockets.emit' e' io.emit' visto [qui] (http://socket.io/docs/server-api/#server#emit). –

+0

@ Ben Fortuna quando li ho entrambi nello stesso momento, entrambi vengono eseguiti ... è sbagliato usare io.on ('connessione', ...) due volte ..? – Srinath

risposta

7

Lo spazio dei nomi di default che i client si connettono a Socket.IO per impostazione predefinita è: /. È identificato da io.sockets o semplicemente io (docs).

Questo esempio copiato dalla documentazione:

// the following two will emit to all the sockets connected to `/` 

io.sockets.emit('hi', 'everyone'); 

io.emit('hi', 'everyone');   // short form 

Suppongo che sia lo stesso per 'on', come lo è per 'emettere': usando 'io.sockets' equivale a utilizzare 'io' solo, è solo una forma più breve.

Per "spazio dei nomi" le prese, significa assegnare diversi endpoint o percorsi (che possono essere utili).

Da una risposta a questo SO question:

"Socket.io fa tutto il lavoro per voi, come se si tratta di due istanze separate, ma limita comunque le informazioni per una connessione, che è abbastanza intelligente"

Problemi correlati