2014-06-17 12 views
24

Używam zestawu socket.io i Mean dla aplikacji internetowej. Uruchomiłem serwer dla gniazda na porcie 3006.io.on ("połączenie", ...) kontra io.sockets.on ("połączenie", ...)

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

Oba te elementy działają na połączeniu.

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

i ...

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

Jaka jest różnica między io.on i io.sockets.on i które z nich należy wykorzystać na pierwszym połączeniu czasu ..?

Choć socket.on npm page wykorzystuje io.on dlaczego to działa na io.sockets.on

+1

Nie w 100%, ale myślę, że to tylko alias. Tak jak w przypadku 'io.sockets.emit' i' io.emit' wyświetlanych [tutaj] (http://socket.io/docs/server-api/#server#emit). –

+0

@Ben Fortuna dobrze, gdy mam ich obu jednocześnie, oba są wykonywane. Czy nie jest właściwe dwukrotne użycie io.on ("połączenie" ...)? – Srinath

Odpowiedz

7

domyślnej przestrzeni nazw, aby klienci Socket.IO połączyć się domyślnie jest: /. Jest identyfikowany przez io.sockets lub po prostu io (docs).

Ten przykład skopiowaną z dokumentacją:

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

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

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

Zakładam, że jest taka sama dla „on”, jak to jest na „emitować”: using „io.sockets” jest równoważne użyciu „IO” tylko, to tylko krótsza forma.

Do "przestrzeni nazw" Twoich gniazd, oznacza przypisanie różnych punktów końcowych lub ścieżek (co może być przydatne).

Od odpowiedzi na to SO question:

„Socket.io wykonuje całą pracę za ciebie, jak gdyby to dwa odrębne przypadki, ale nadal ogranicza informacje do jednego połączenia, który jest całkiem inteligentny”