2014-06-17 6 views
24

웹 응용 프로그램에 socket.ioMean 스택을 사용하고 있습니다. 내가 3006 포트 소켓에 대한 서버를 시작했다.io.on ('connection', ...) vs io.sockets.on ('connection', ...)

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

이 두 가지 모두 연결에 작동하는 것 같습니다.

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

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

I가 처음 접속에 사용되어야 하나 io.onio.sockets.on과의 차이점은 무엇

..? / : 그것은 io.sockets.on

+1

100 % 아니지만 별칭 일뿐입니다. 'io.sockets.emit'과'io.emit'와 같이 [here] (http://socket.io/docs/server-api/#server#emit). –

+0

@Ben Fortune 같은 시간에 양쪽 모두 가지고있을 때 둘 다 실행됩니다 .. io.on ('connection', ...)을 두 번 사용하는 것은 잘못입니까? – Srinath

답변

7

입니다 Socket.IO 클라이언트가 기본적으로 연결 기본 네임 스페이스 작업을하는 이유 socket.on npm page 비록

io.on를 사용합니다. io.sockets 또는 간단히 io (docs)으로 식별됩니다.

문서에서 복사 예제 :

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

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

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

는 '방출'을위한 나는, 그것은 '에'에 대해 동일합니다 가정 : 'IO'를 사용하는 것과 같습니다 'io.sockets'를 사용하여 단지 더 짧은 형식 일뿐입니다.

소켓의 "네임 스페이스"란 다른 끝점 또는 경로를 할당하는 것을 의미합니다 (유용 할 수 있음). 이에 대한 답변에서

SO question :

". Socket.io는 두 개의 별도의 인스턴스이지만, 여전히 꽤 똑똑 하나 개의 연결로 정보를 제한하는 것처럼 당신을 위해 모든 작업을 수행"