Socket.Io 如何从包括发送者在内的套接字实例向房间中的所有成员发送
Socket.Io how to emit to all members in a room from a socket instance including the sender
如何从套接字实例向房间的所有成员发送信号?
我知道我可以 io.in('room').emit('event', data);
如果我可以访问 IO 实例,但在我的例子中我只能访问发送者的套接字,我将用户的套接字存储在用户对象中,并将它传递到我的代码中,以便我可以从任何地方发出,但结果我无法访问 IO 实例。
如何从发送者的套接字实例向房间的所有成员发送消息,包括发送者?
嗯,最好让自己以某种方式访问 io
实例,这样您就可以 io.in(room).emit(...)
。您可以从创建它的地方导出它,然后将它导入您所在的位置,也可以通过其他方式使其可用。
这里有四种其他方法:
将.io
属性连接到每个插座
在创建 io
实例的文件中,您可以将其作为 属性 附加到每个套接字。
// put io on each socket
io.on('connection', socket => {
socket.io = io;
});
然后,在任何套接字上,你可以用 socket.io
.
得到 io
将 io
实例放入您的 app
对象中
如果 app
可用,那么有些人会使用 app.set("io", io);
将 io
实例放在 app
对象上,这样其他地方的代码就可以使用 io.get("io");
.
同时发送到房间和自己
作为变通方法,您也可以同时发送到:
socket.broadcast(room).emit(...);
socket.emit(...);
使用无证socket.server
socket
上还有一个未记录的 属性,它使您可以访问服务器对象。使用风险自负:
socket.server.in("room").emit(...);
这实际上为您提供了 io
实例。
如何从套接字实例向房间的所有成员发送信号?
我知道我可以 io.in('room').emit('event', data);
如果我可以访问 IO 实例,但在我的例子中我只能访问发送者的套接字,我将用户的套接字存储在用户对象中,并将它传递到我的代码中,以便我可以从任何地方发出,但结果我无法访问 IO 实例。
如何从发送者的套接字实例向房间的所有成员发送消息,包括发送者?
嗯,最好让自己以某种方式访问 io
实例,这样您就可以 io.in(room).emit(...)
。您可以从创建它的地方导出它,然后将它导入您所在的位置,也可以通过其他方式使其可用。
这里有四种其他方法:
将.io
属性连接到每个插座
在创建 io
实例的文件中,您可以将其作为 属性 附加到每个套接字。
// put io on each socket
io.on('connection', socket => {
socket.io = io;
});
然后,在任何套接字上,你可以用 socket.io
.
io
将 io
实例放入您的 app
对象中
如果 app
可用,那么有些人会使用 app.set("io", io);
将 io
实例放在 app
对象上,这样其他地方的代码就可以使用 io.get("io");
.
同时发送到房间和自己
作为变通方法,您也可以同时发送到:
socket.broadcast(room).emit(...);
socket.emit(...);
使用无证socket.server
socket
上还有一个未记录的 属性,它使您可以访问服务器对象。使用风险自负:
socket.server.in("room").emit(...);
这实际上为您提供了 io
实例。