断开连接事件后Socket.io不发出

时间:2018-11-29 13:15:53

标签: socket.io

我想在断开socket.io事件发生后将数据从服务器发送到客户端。

服务器:

const clients = {};
io.on('connection', socket => {
    clients[socket.id] = socket;
    console.log('connect : ' + socket.id);
    socket.emit('socket-connect', 'connected');

    socket.on('disconnect', () => {
        socket.emit('socket-disconnect', 'disconnected');
        delete clients[socket.id];
        console.log('disconnect : ' + socket.id);
    });
});

客户:

const  socket = openSocket('localhost');

socket.on('socket-connect', data => {
    console.log(data);
});

socket.on('socket-disconnect', data => {
    console.log(data);
});

如果套接字已连接,则服务器会向客户端发送连接消息,并且可以正常工作,但是如果发生断开连接,则不会向客户端发送中断的消息。

服务器上的

console.log('disconnect : ' + socket.id);显示与socket.id断开连接。

我在服务器和客户端上都使用socket.io v2.0.4。

如果发生套接字断开连接事件,如何从服务器发送数据?

1 个答案:

答案 0 :(得分:1)

事件:disconnect在断开连接时被触发。这仅表示出于某种原因,客户端和服务器之间没有连接。 因此,在这种情况下,由于客户端未连接,因此无法将数据发送到客户端。如果客户端的网络不可用(读取Internet故障)或客户端环境(例如浏览器)崩溃或用户关闭了标签页,则可能会断开连接。