Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 套接字io-管理多个房间?_Node.js_Sockets_Websocket_Socket.io - Fatal编程技术网

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

Node.js 套接字io-管理多个房间?,node.js,sockets,websocket,socket.io,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),那么很自然地,最新的房间就不会写了,我怎么能有多个房间呢?我通

使用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
),那么很自然地,最新的房间就不会写了,我怎么能有多个房间呢?

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

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?

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

发布代码,在那里声明和设置room这里有一个我写的关于多房间聊天的教程:谢谢,伙计们,我现在就这么做了:我只是不明白房间是如何管理的,在链接中,它们存储在socket.room中,但这是如何管理的,它如何记住每个用户属于哪个房间,在房间被更改后,等等