2013-01-21 2 views
0

저는 node.js와 socket.io를 처음 사용합니다. socket.io 사이트의 샘플 코드 (http://socket.io/#how-to-use)가 실행중인 테스트 서버가 있습니다.node.js/socket.io가 두 가지 다른 이벤트에 응답하도록하십시오

나는 그것이 알고 노드를 노드를 다음

  • 서핑 "PAGE1"를 수행하고 수 있도록 시작 내가
  • 서핑 "페이지 2"를의 user1있어 것을 알고 수 있도록 위치를 모른다 '사용자 2
  • 예 : 동기화 단어 user1과 user2는 각각 "page1"과 "page2"어딘가에 입력하고 user1과 user2의 모든 단어를 양쪽 페이지에 모두 표시합니다.

node.js 앱의 서버 측 "처리기"기능에서 일종의 라우팅을 만들어야한다고 생각하지만 올바른 방법은 맞는지 확신 할 수 없습니다.

나를 올바른 방향으로 안내해 줄 수있는 사람이 있습니까?

새내기를 도와 주셔서 감사합니다.

답변

0

Socket.io는 이것을 매우 쉽게 만듭니다. 네임 스페이스와 방이 있습니다. 예를 들어 두 개의 다른 네임 스페이스를 만들려면 다음을 수행하십시오.

var io = require('socket.io').listen(app, {origins: '*:*', log: false}); 

var page1 = io.of('/page1').on('connection', function (socket) { 
    //you can use socket in here 
}); 

var page2 = io.of('/page2').on('connection', function (socket) { 
    //you can use socket in here 
}); 

이제 네 개의 네임 스페이스가 있습니다. 각각의 내부에서 이벤트를들을 수 있습니다. 예를 들어 유형 이벤트를 보낸 경우 :

socket.on('type', function(text){ 
    io.sockets.emit('type', {'whatWasTyped': text]); 
} 

이렇게하면 연결된 모든 클라이언트에 유형 이벤트가 전송됩니다.

네임 스페이스를 훨씬 더 분리하려면 방을 만들 수 있습니다. 다음은 네임 스페이스에 방을 만드는 방법입니다 :

var page1 = io.of('/page1').on('connection', function (socket) { 
    socket.on('add', function(area){ 
    socket.join(area); 
    }; 
}); 

당신이 가입 할 것 방와의 연결을 만든 추가 이벤트 매번 전송해야합니다. 그러면 해당 방으로 메시지를 보낼 수 있습니다.

io.of('/users').in(area).emit('event', {'event': yourInfoHere}); 

당신은 실행하여 연결에 대한 정보를 얻을 수 있습니다 https://github.com/LearnBoost/socket.io/wiki/Rooms :

socket.get('user', function(err, info){ //in here }); 

이 내 머리 위로 떨어져와 socket.io 위키에서 약간의 정보이었다.

아직 테스트하지 않았으므로 몇 가지 질문이 있으면 알려주십시오.

관련 문제