我使用了
const my_socket = io.sockets.connected['YnwlYH-gCKT2K9jEAAAu'];
很多。
https://dev59.com/o2Af5IYBdhLWcg3wnDsI#24464450
在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
# 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 socket.io@2.X socket.io-client@2.X
没错,这实际上是一个 X
- 用于最新的子版本。
你有任何重构指示吗?
namespace.sockets
是Map<SocketId, Socket>
类型。 因此,可以这样解释:io.sockets
是默认命名空间,defaultNamespace.sockets
是一个Map, 其中Map有一个名为get()
的方法,该方法返回一个Socket
类型的对象。 - Ben Zenkerio.sockets.sockets
是否包含来自适配器(例如Redis)的所有套接字? - booziconst socket = io.of("/").sockets.get('<socket_id>')
- undefined