如何检测未注册的socket.io事件?

时间:2018-08-17 03:05:39

标签: node.js socket.io socket.io-1.0

我正在使用node.js和socket.io作为聊天程序,并且听了一些事件。这是相关代码:

gpioset $(gpiofind "USR-LED-2")=1

如果客户端发出的事件未注册为server: io.sockets.on('connection',( socket ) => { socket.on('joinRoom',( data )=>{ do with message }); socket.on('leaveRoom',( data )=>{ do with message }); } client: io.emit('joinRoom',{uid:11}); ,则服务器如何检测到该事件?

3 个答案:

答案 0 :(得分:1)

  

使用 socketio通配符插件。

您可以使用wildcard套接字IO插件按照SocketIO官方文档here中的建议进行操作,例如:

socket.on('*', function(packet){
  // client.emit('foo', 'bar', 'baz')
  packet.data === ['foo', 'bar', 'baz']
});

答案 1 :(得分:0)

因为套接字服务器正在侦听端口上发生的事件,而不是“事件”。因此,如果某物被“散发”并且有“听者”会捡起它,那么它只是不知道该如何处理。

不确定这是否有帮助,但这是socket.io cheetsheet

答案 2 :(得分:0)

在 3.x 中,无需任何插件即可使用 onAny listener 完成:

socket.onAny((eventName, ...args) => {
  const isNotRegistered = !Object.keys(socket._events).includes(eventName)
  
  if (isNotRegistered) {
    // Event is not registered
  }
})