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

时间:2016-08-01 10:49:09

标签: node.js socket.io emit

我试图向所有套接字发送一个事件,但我收到了一个我不理解的错误。

代码非常简单:

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()在文档中。

有人可以帮助我吗?

提前获取帮助和建议!

CAFA

1 个答案:

答案 0 :(得分:1)

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

我没有完全理解这个问题,但它正在发挥作用。

以下是我的理解:

  1. 我的代码没有完全整理。现在,我完全控制插座到我的控制器。之前,某些承诺可以在套接字上触发事件。

  2. 我的活动层次结构也没有完全整理。有时我试图在同一时间发射多个事件。现在,每个事件都会收到一个订单,并且只能点燃一个发票,这就是全部。

  3. 组织好的事件插座非常复杂,我想我必须了解每一个电话和响应,以及我在活动中的位置。

    对不起,如果我的英语非常糟糕,那不是我的天生语言: - /

    希望它会有所帮助。

    CAFA