套接字io - 管理多个房间?

时间:2013-03-10 22:35:24

标签: node.js sockets websocket socket.io

使用node.js和socket.io

管理多个房间时遇到问题
socket.on('join_room', function (data) {
   socket.join(data);
});

 socket.on('send_msg', function (data) {
   io.sockets.in(theroom).emit('message', data);
});

如果我将房间设置在一个变量(即theroom)中,然后自然会用最新的房间写完,我怎么能有多个房间?

1 个答案:

答案 0 :(得分:0)

我通过写一个发送到房间的函数来解决这个问题:

listen: (server, callback) =>
  @server = server
  @logger.debug 'SDL: starting up socket'
  # @socketTool is object returned by socket io require 
  @listener = @socketTool.listen(server, log: true, 'log level': @logLevel )

emitToRoom: (room, type, data, callback) =>
  @logger.debug "all rooms: #{@utilLib.inspect @listener.sockets.manager.rooms}"
  @listener.sockets.in(room).emit(type, data)
  callback() if callback?

我认为你缺少的是单个套接字不理解其他房间,你需要在监听器级别处理它。