【发布时间】:2020-03-27 00:34:50
【问题描述】:
我关注了a different S/O answer,想知道如何与我的服务器通信,客户端通过使用断开连接
var socket = io.connect(<your_url>, {
'sync disconnect on unload': true });
问题是,由于这是原始套接字配置的一部分,我无法从服务器上判断我的哪些客户端实际上已断开连接。在我的客户端,我显示了所有已连接客户端的用户名列表,因此我需要知道要从该列表中删除其余客户端的用户名。
客户端关闭时触发的服务器端代码是:
socket.on('disconnect', reason => {
console.log('user disconnected', reason);
});
但“原因”变量原来只是一个字符串,上面写着:“传输关闭”,没有关于断开连接的实际客户端的信息。
我想到的一种方法是,每当客户端断开连接时,服务器可以向所有连接的客户端请求响应,并使用它每次都发送更新的列表,但这似乎过分了。我更希望知道哪个客户端在断开连接时断开连接,并简单地广播新断开连接的客户端的 ID,以便其他客户端能够在本地更新各自的用户列表。毕竟,当一个新客户端加入时,我会广播该客户端的用户名,因此所有客户端都可以在本地更新 - 我想在客户端断开连接时使用相同的模式。
简而言之,有没有人知道在 socket.io 的“卸载时同步断开”配置中,也可以在卸载时发送客户端的 ID?
【问题讨论】:
标签: javascript websocket socket.io