ujw*_*kal 7 sockets node.js socket.io
我无法在断开连接事件时将数据从客户端发送到服务器
//客户端
var gname = "asd";
socket.emit('disconnect',gname);
Run Code Online (Sandbox Code Playgroud)
//服务器端
socket.on('disconnect', function (data) {
console.log(data);
var i = connect_clients.indexOf(data);
if(i != -1) {
connect_clients.splice(i, 1);
}
}
Run Code Online (Sandbox Code Playgroud)
您将无法这样做,因为套接字已与服务器断开连接。当服务器检测到断开连接(在此之前不是神奇地一小部分)并且客户端和服务器之间的“桥梁”已经关闭/中断/无论如何 - 没有连接意味着没有数据交换时,服务器上的事件就会触发。
对于如何处理断开连接的客户端,您有两种选择:
使用数据库或局部变量通过“socket.id”存储一些用户信息(例如追踪在线用户)。当您在服务器上收到disconnect事件时,您可以看到断开连接的套接字 ID。用它id来做一些需要的事情,比如减少在线用户数量并将其广播给其他人。
(相当糟糕的解决方案)等待reconnect客户端上的事件并在重新建立连接时从那里发送数据。当然,如果服务器保持关闭状态,数据可能会丢失。
如果您需要执行一些简单的服务器端操作,解决方案 1 可能工作得很好,但如果您有一些复杂的操作,例如未保存的表单数据,您将不得不想出某种方式将数据保存在 中localStorage,例如,并同步它回到reconnect.
| 归档时间: |
|
| 查看次数: |
3018 次 |
| 最近记录: |