Socket.io – 错误:socket.packet不是一个函数

我试图发射一个事件到所有套接字,但我有一个错误,我不明白。

代码很简单:

io.on('connection', function(socket) { [...] socket.on('Security:ImOn', function() { var id = socket.id.split('#')[1]; io.sockets.emit('Security:IsConnected', id); }); [...] }); 

这个事件只是发送一个ID到所有的套接字,所以他们知道这个新的套接字打开。

系统尝试发出安全性时出现的错误:IsConnected:

 Missing error handler on `socket`. TypeError: socket.packet is not a function at D:\Projets\Ecafa\ecafa-server\node_modules\ecafa-socket\node_modules\socket.io-adapter\index.js:143:30 at Encoder.encode (D:\Projets\Ecafa\ecafa-server\node_modules\ecafa-socket\node_modules\socket.io-adapter\node_modules\socket.io-parser\index.js:135:5) at Adapter.broadcast (D:\Projets\Ecafa\ecafa-server\node_modules\ecafa-socket\node_modules\socket.io-adapter\index.js:121:16) at Namespace.emit (D:\Projets\Ecafa\ecafa-server\node_modules\ecafa-socket\node_modules\socket.io\lib\namespace.js:219:18) at Socket.<anonymous> (D:\Projets\Ecafa\ecafa-server\node_modules\ecafa-security\src\AuthenticationController.js:30:24) at emitTwo (events.js:100:13) at Socket.emit (events.js:185:7) at Socket.onevent (D:\Projets\Ecafa\ecafa-server\node_modules\ecafa-socket\node_modules\socket.io\lib\socket.js:335:8) at Socket.onpacket (D:\Projets\Ecafa\ecafa-server\node_modules\ecafa-socket\node_modules\socket.io\lib\socket.js:295:12) at Client.ondecoded (D:\Projets\Ecafa\ecafa-server\node_modules\ecafa-socket\node_modules\socket.io\lib\client.js:193:14 Missing error handler on `socket`. TypeError: socket.packet is not a function at D:\Projets\Ecafa\ecafa-server\node_modules\ecafa-socket\node_modules\socket.io-adapter\index.js:143:30 at Encoder.encode (D:\Projets\Ecafa\ecafa-server\node_modules\ecafa-socket\node_modules\socket.io-adapter\node_modules\socket.io-parser\index.js:135:5) at Adapter.broadcast (D:\Projets\Ecafa\ecafa-server\node_modules\ecafa-socket\node_modules\socket.io-adapter\index.js:121:16) at Namespace.emit (D:\Projets\Ecafa\ecafa-server\node_modules\ecafa-socket\node_modules\socket.io\lib\namespace.js:219:18) at Socket.<anonymous> (D:\Projets\Ecafa\ecafa-server\node_modules\ecafa-security\src\AuthenticationController.js:30:24) at emitTwo (events.js:100:13) at Socket.emit (events.js:185:7) at Socket.onevent (D:\Projets\Ecafa\ecafa-server\node_modules\ecafa-socket\node_modules\socket.io\lib\socket.js:335:8) at Socket.onpacket (D:\Projets\Ecafa\ecafa-server\node_modules\ecafa-socket\node_modules\socket.io\lib\socket.js:295:12) at Client.ondecoded (D:\Projets\Ecafa\ecafa-server\node_modules\ecafa-socket\node_modules\socket.io\lib\client.js:193:14) 

我不明白为什么socket.io拖我这个错误,io.sockets.emit()是在文档中。

有人能帮我吗 ?

提前Thx寻求帮助和build议!

中央美术学院

       

网上收集的解决方案 "Socket.io – 错误:socket.packet不是一个函数"

好的,我解决了这个问题。

我不完全理解这个问题,但它的工作。

这是我明白的:

  1. 我的代码没有完全组织。 现在,我完全控制我的控制器套接字。 之前,一些承诺可以在套接字上触发一个事件。

  2. 我的事件层次也没有完全组织起来。 有时候我正试图在同一时间发射多个事件。 现在每个事件都收到一个命令,只能发射一个命令,就这样。

要组织好事件套接字真的很复杂,我想我必须知道每个呼叫和响应,以及我在我的事件。

对不起,如果我的英语真的不好,这不是我的天生的语言: – /

希望它会有所帮助。

中央美术学院