【问题标题】:Socket.io server can't broadcast to roomSocket.io 服务器无法广播到房间
【发布时间】:2015-12-18 19:44:12
【问题描述】:
io.on("connection", function(socket){ 
    ...
    socket.on("join", function(id){
        socket.join(room);
        socket.broadcast.to(room).emit("joined", ...);
        ...
    });
    ...
});

socket.broadcast.to(room).emit("joined", ...); 没有任何作用 它不会向房间发送事件

我已经尝试过使用:
socket.to(room).emit("joined", ...)
socket.in(room).emit("joined", ...) io.sockets.in(room).emit("joined", ...);
io.to(room).emit("joined", ...);
io.in(room).emit("joined", ...);

我正在使用 socket.io 服务器 v1.3.7

有什么办法吗?

【问题讨论】:

  • 查看更多代码会很有帮助。我不认为你会得到太多的回应。
  • @xkcd149 感谢提示

标签: node.js socket.io broadcast


【解决方案1】:

试试

io.to(room).emit("joined", ...);

【讨论】:

  • @spikerola 已定义为 room,如果已定义 room,请尝试执行 socket.join(room);
【解决方案2】:

你应该能够通过发射到房间里的所有插座来得到你想要的东西。如果您需要排除当前加入的套接字,在加入之前发出事件应该会给您所需的行为。

socket.join('roomName');
io.sockets.in('roomName').emit('joined', ...);

【讨论】:

  • 对不起,我没有指定:我已经尝试过使用这种方法。现在我会更新
  • 嗯。这很奇怪......我对为什么这不起作用很感兴趣,但我认为我不能在这里为你提供更多帮助。我会潜伏在后台,希望其他人知道这里发生了什么。希望您的问题尽快得到解决!
【解决方案3】:

试试这个:

io.sockets['in'](socket.room).emit('joined',....

【讨论】:

    【解决方案4】:

    我在github上搜索过,没有人知道这个问题的根源..
    大概是socket.io的系统问题。

    【讨论】:

      【解决方案5】:

      好像和socket.id搞混会有不好的后果,最好避免!

      【讨论】:

        猜你喜欢
        • 2017-11-06
        • 1970-01-01
        • 2018-08-08
        • 1970-01-01
        • 2012-01-04
        • 2013-01-01
        • 2020-08-18
        • 2011-10-15
        • 2018-05-13
        相关资源
        最近更新 更多