【问题标题】:Sockets io - managing multiple rooms?Sockets io - 管理多个房间?
【发布时间】:2014-08-09 03:11:33
【问题描述】:

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

【问题讨论】:

  • 贴出代码,在哪里声明和设置房间
  • 这是我写的关于多房间聊天的教程:udidu.blogspot.co.il/2012/11/…
  • 谢谢大家,我现在关注这个:psitsmike.com/2011/10/… 我只是不明白房间是如何管理的,在链接中,它们存储在 socket.room 中,但是这是如何管理的,它如何记住哪个每个用户所属的房间,房间更改后等

标签: node.js sockets websocket socket.io


【解决方案1】:

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

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?

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

【讨论】:

    猜你喜欢
    • 2018-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-09
    • 1970-01-01
    • 2016-08-13
    • 1970-01-01
    相关资源
    最近更新 更多