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

时间:2016-11-26 08:14:55

标签: events parameters socket.io disconnect

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

//客户端

var userId = 23;
socket.disconnect(user);

//服务器

socket.on('disconnect', function (data) {
        console.log('DISCONNECT: '+  data)
    })

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

2 个答案:

答案 0 :(得分: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)
  })
})

然后,您的客户会像{<1>}那样收听myCustomEvent

socket.on('myCustomEvent', (data) => {
    console.log(data)
})

我希望这会有所帮助:)

答案 1 :(得分:0)

我们可以在服务器端管理全局阵列。

var sockets = [];
io.on('connection', function (socket) {
    const id = socket.id ;

    socket.on('user-join', function(data) {
         sockets[id] = res.id;
    });

    socket.on('disconnect', function(data) { 
        io.emit('user-unjoin', {user_id: sockets[id],status:'offline'}); 
    });
});

在客户端,

socket.on('user-unjoin', function (data) {
    // update status of data.user_id according to your need.
});

此答案的灵感来自杰克森姆森的答案。

相关问题