NodeJS Socket.IO 4.0.1:通过id获取套接字

svdrlsy4  于 11个月前  发布在  Node.js
关注(0)|答案(3)|浏览(129)

我以前

const my_socket = io.sockets.connected['YnwlYH-gCKT2K9jEAAAu'];

字符串
很多
https://stackoverflow.com/a/24464450/1707015
它在3.X和4.0.1中是否损坏?

$ npm list socket.io
[email protected]

$ npm list socket.io-client
[email protected]
# Object.keys(io.sockets):
_events,_eventsCount,_maxListeners,sockets,_fns,_ids,server,name,adapter

# io.sockets.connected:
undefined

# io.sockets.connected['YnwlYH-gCKT2K9jEAAAu']:
TypeError: Cannot read property 'YnwlYH-gCKT2K9jEAAAu' of undefined
    at Socket.<anonymous> (/path:row:char)
    at processTicksAndRejections (internal/process/task_queues.js:86:5)

的数据
我可以使用版本2(而不是版本3或版本4)运行它:

$ npm install --quiet --save-dev [email protected] [email protected]


是的,这是一个X-最新的子版本。
你有什么重构的指示吗?

qjp7pelc

qjp7pelc1#

这个问题和答案可能是https://stackoverflow.com/a/66835961/1707015的(更新/更好)副本。对不起,我现在才看到它。感谢Sanjay Nishad。

const my_socket = io.sockets.sockets.get('YnwlYH-gCKT2K9jEAAAu');

字符串

lo8azlld

lo8azlld2#

对于任何适配器,都可以使用fetchSockets()函数通过socketId获取套接字连接。

const socketList = await io.in(socketId).fetchSockets();

字符串
除了socketId,你也可以使用socketRoom。
有关文档,请参阅此处。

hpxqektj

hpxqektj3#

“socket.io“:“^4.1.3”

nsp.sockets.get(socketid).join(roomId)
nsp.to(roomId).emit("message",{message : "something"})

字符串
它对我起作用

相关问题