使用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
)中,然后自然会用最新的房间写完,我怎么能有多个房间?
答案 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?
我认为你缺少的是单个套接字不理解其他房间,你需要在监听器级别处理它。