Socket.io使用参数发送disconnect事件

Ehs*_*Ali 3 parameters events disconnect socket.io

我想手动将disconnect事件与自定义参数一起发送到socket.io服务器.我使用此功能但不起作用:

//客户

var userId = 23;
socket.disconnect(user);
Run Code Online (Sandbox Code Playgroud)

//服务器

socket.on('disconnect', function (data) {
        console.log('DISCONNECT: '+  data)
    })
Run Code Online (Sandbox Code Playgroud)

现在,如何在发送断开连接事件时向服务器发送其他数据?

Jac*_*son 5

Socket IO的disconnect事件在内部触发,但您可以在调用它时发出自定义事件.

您需要先听取断开连接事件.一旦调用了这个事件,你应该发出你自己的自定义事件,比如说我们调用它.myCustomEvent一旦调用了这个事件,你的客户端就应该监听你的myCustomEvent声音,然后输出你传递的数据.例如:

io.sockets.on('connection', function (socket) {
  const _id = socket.id
  console.log('Socket Connected: ' + _id)
  // Here we emit our custom event
  socket.on('disconnect', () => {
    io.emit('myCustomEvent', {customEvent: 'Custom Message'})
    console.log('Socket disconnected: ' + _id)
  })
})
Run Code Online (Sandbox Code Playgroud)

然后,您的客户端将监听myCustomEvent像这样

socket.on('myCustomEvent', (data) => {
    console.log(data)
})
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助 :)

  • 调用socket.disconnect将触发disconenct事件,服务器会将其发送到其套接字,但触发该事件的套接字将不会收到该事件 (3认同)
  • 但是,如果客户端已经发送了断开连接事件,那么如何保证他会监听 myCustomEvent?也就是说他没有断线吧? (2认同)