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

qrä*_*bnö 11 sockets websocket node.js socket.io

我用了

const my_socket = io.sockets.connected['YnwlYH-gCKT2K9jEAAAu'];
Run Code Online (Sandbox Code Playgroud)

很多。

/sf/answers/1712511531/

3.X 和 4.0.1 中它有问题吗?

$ npm list socket.io
socket.io@4.0.1

$ npm list socket.io-client
socket.io-client@4.0.1
Run Code Online (Sandbox Code Playgroud)
# 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)
Run Code Online (Sandbox Code Playgroud)

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

$ npm install --quiet --save-dev socket.io@2.X socket.io-client@2.X
Run Code Online (Sandbox Code Playgroud)

是的,这实际上是X最新子版本的 - 。

您有重构说明吗?

qrä*_*bnö 30

这个问题和答案可能是/sf/answers/4678517301/的(更新/更好)重复。抱歉,我现在才看到。感谢 Sanjay Nishad。


const my_socket = io.sockets.sockets.get('YnwlYH-gCKT2K9jEAAAu');
Run Code Online (Sandbox Code Playgroud)