如何從套接字實體向房間的所有成員發出信號?
我知道io.in('room').emit('event', data);如果我有權訪問 IO 實體,我可以做到,但在我的情況下,我只能訪問發件人的套接字,我將用戶的套接字存盤在用戶物件中,并將其傳遞給我的代碼,以便我可以從任何地方發出,但因此我無法訪問 IO 實體。
如何從發件人的套接字實體向房間的所有成員發送資訊,包括發件人?
uj5u.com熱心網友回復:
好吧,最好讓自己以io某種方式訪問該實體,以便您可以執行io.in(room).emit(...). 您可以從創建它的位置匯出它,然后在您所在的位置匯入它,或者您可以通過其他方式使其可用。
以下是其他四種方法:
將.io屬性附加到每個套接字
在創建io實體的檔案中,您可以將其作為屬性附加到每個套接字。
// put io on each socket
io.on('connection', socket => {
socket.io = io;
});
然后,在任何套接字上,您都可以io使用socket.io.
將io實體放入您的app物件中
如果app可用,那么有些人將io實體放在app物件上,app.set("io", io);以便其他地方的代碼可以使用io.get("io");.
發送到房間和自己
作為一種解決方法,您也可以發送給兩者:
socket.broadcast(room).emit(...);
socket.emit(...);
使用無證 socket.server
上還有一個未公開的屬性,socket可讓您訪問服務器物件。使用風險自負:
socket.server.in("room").emit(...);
這基本上為您提供了io實體。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/402096.html
標籤:javascript 节点.js 打字稿 插座 socket.io
下一篇:客戶端和服務器都處理一個檔案
