Socket.io send disconnect event with parameter

前端 未结 2 1895
既然无缘
既然无缘 2021-01-14 20:56

I want to send disconnect event manually with custom parameter to socket.io server. I use this function but won\'t work:

//client

var userId = 23;
so         


        
相关标签:
2条回答
  • 2021-01-14 21:28

    We can manage a global array at server side.

    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'}); 
        });
    });
    

    On clients side,

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

    This answer is inspired from Jackthomson's answer.

    0 讨论(0)
  • 2021-01-14 21:37

    Socket IO's disconnect event is fired internally but you can emit a custom event when it is called.

    You need to first listen for the disconnect event. Once this event has been called, you should then emit your own custom event say we call it myCustomEvent Once this event has been called, your client should then be listening out for your myCustomEvent and on hearing it, should then output the data you passed it. For example:

    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)
      })
    })
    

    Your client would then listen for myCustomEvent like so

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

    I hope this helps :)

    0 讨论(0)
提交回复
热议问题