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

问题描述 投票:0回答:3

我用过

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
- 最新的子版本。

你有重构说明吗?

node.js sockets websocket socket.io
3个回答
29
投票

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


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

0
投票

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

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

除了socketId,您还可以使用socketRoom。

请参阅此处获取文档。


-1
投票

“socket.io”:“^4.1.3”

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

它对我有用

© www.soinside.com 2019 - 2024. All rights reserved.