2013-07-29 7 views
0

저는 node.js를 처음 사용하고 있으며, Socket.io를 사용하여 도메인에 여러 개의 채팅 서버를 만드는 방법을 배우고 있습니다.node.js 서버의 여러 인스턴스 호스팅하기

  • 당신이 사이트에 로그온
  • 당신이 대화방을 선택하거나 다른 대화방이에서 진행하는 동안
  • 는 개별 대화방 것을 가입 대화방을 만들 : 여기

    는 시나리오이다 같은 시간에

나는 웹상에서 꽤 표준적인 조작이지만 아직 그것을 할 방법을 찾지 못했다. 특히 도메인에서 호스팅하는 방법.

작성하고 테스트 할 때 나는 항상 내 localhost를 사용하고 서버에 listen(8000)을 알려줍니다. 그러나 다음과 같은 스크립트를 작성하는 방법 :

가) 각각의 새 채팅 서버에 대해 새로운 수신 대기 포트를 동적으로 생성합니까?

B) 어떻게 호스트합니까 (Hostmonster 사용)?

답변

0

각 채팅방에 대해 별도의 서버를 만드는 대신 동일한 서버에서 모든 서버를 실행하고 관련 채팅 소켓 이름에 대한 맵을 유지 관리 할 수 ​​있습니다.

예를 들어

,

//store a map of chat room name to sockets here 
var chatRooms = {}; 

io.sockets.on('connection', function (socket) { 
    //when someone wants to join a chat room, check to see if the chat room name already exists, create it if it doesn't, and add the socket to the chat room 
    socket.on('joinChatRoom', function (data.message) { 
    var chatRoomName = data.message; 
    chatRooms[chatRoomName] = chatRooms[chatRoomName] || []; 
    chatRooms[chatRoomName].push(socket); 

    //set the chatRoomName into the socket so we can access it later 
    socket.set("chatRoomName", chatRoomName, function() { 
     //when we receive a message 
     socket.on("chatMessage", function(data) { 
     var chatMessage = data.message; 
     //figure out what chat room this socket belongs to 
     socket.get("chatRoomName", function(err,chatRoomName) { 
      //iterate over the sockets in the chat room and send the message 
      chatRooms[chatRoomName].each(function(chatRoomSocket) { 
      chatRoomSocket.emit("chatMessage", { message : chatMessage }); 
      }); 
     }); 
     }); 
    }); 
    }); 
}); 

참고이 코드는 안된 그냥 아이디어 (당신은 아마 더 의사처럼 취급한다)입니다. 연결이 끊어 지거나 오류가 발생할 때마다 정리 작업을 처리하지 못하는 일들이 많이 있습니다.이 작업을 수행하는 다른 (더 나은) 방법이 많이 있지만 희망 사항은 더 많은 아이디어를 줄 것입니다.

+0

예, 멋진 시작입니다. 나는 그런 일이 가능할지도 모른다는 생각을 가지고 있었지만 잠재적으로 여러 가지 두통을 일으킬 수 있습니다. 어떻게 펼쳐지는지 알려 드리겠습니다. – JDillon522