0

使用 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),那么自然会被最新的房间覆盖,我怎么能有多个房间?

4

1 回答 1

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?

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

于 2013-05-24T16:38:32.740 回答