2016-08-01 173 views
1

我试图发送一个事件到所有套接字,但我有一个错误,我不明白。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提前寻求帮助和建议!

Cafa

+0

也许你在'ecafa安全套接字更改的\ src \ AuthenticationController.js' –

+0

不,AuthenticationController包含IO代码。 – Cafa

+0

你试图发射给所有的客户端,但将1套接口的ID传递给函数,这是正确的吗? – pay

回答

1

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

我不完全了解问题,但它的工作。

这里是我的理解:

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

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

组织好事情真的很复杂事件套接字,我想我必须知道每个调用和响应,以及我在我的事件中的位置。

很抱歉,如果我的英语非常糟糕,这不是我天生的语言: -/

希望这将有助于。

中央美术学院

相关问题