Socket.io服务器无法向房间广播

3
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,请问有什么解决方案吗?


1
看到更多的代码会很有帮助。我认为仅凭这些你不会得到太多回应。 - xkcd149
@xkcd149 谢谢你的提示。 - user5696333
5个回答

2

Try

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


1
请问@spikerola,room是否已定义?如果已定义,请尝试执行socket.join(room); - Hakan Kose

0

试试这个:

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

0

你应该能够通过向房间中的所有套接字发出信号来获得你想要的内容。如果你需要排除当前加入的套接字,则在加入之前发出事件应该可以给你所需的行为。

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

抱歉我没有说明:我已经尝试过使用这种方法了。现在我将进行更新。 - user5696333
哦,这很奇怪...我对为什么这不起作用非常感兴趣,但我认为我在这里无法再帮助你了。我会潜伏在后台,希望其他人知道发生了什么。希望你的问题能尽快解决! - Connor

0

我在 GitHub 上搜索了一下,但没有人知道这个问题的起源...
可能是 socket.io 的一个系统性问题。


0

看起来玩弄 socket.id 会有不好的后果,最好避免使用!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接