发送从客户端到服务器节点上断开事件的数据

我不能发送断开连接事件从客户端的数据到服务器

//客户端

var gname = "asd"; socket.emit('disconnect',gname); 

//服务器端

  socket.on('disconnect', function (data) { console.log(data); var i = connect_clients.indexOf(data); if(i != -1) { connect_clients.splice(i, 1); } } 

       

网上收集的解决方案 "发送从客户端到服务器节点上断开事件的数据"

你将无法,因为套接字从服务器断开。 当服务器检测到断开连接时,服务器触发事件​​(在此之前不是神奇的一小部分),客户端和服务器之间的“桥接” 已经closures/中断/不pipe – 没有连接意味着没有数据交换。

你有两个select,如何做一些与断开连接的客户端:

  1. 使用数据库或本地variables来存储一些用户信息'socket.id'(例如跟踪在线用户)。 当你在服务器上得到disconnect事件时,你可以看到socket的id被断开。 使用此id来做需要的东西,如减less在线用户数量,并将其广播给他人。

  2. (相当糟糕的解决scheme)等待客户端reconnect事件,并在连接重新build立时从那里发送数据。 当然,如果服务器仍然停机,数据可能会丢失。

如果你需要执行一些简单的服务器端的东西,解决scheme1可能工作得很好,但如果你有一些复杂的,如未保存的表单数据,你将不得不拿出一些保存在localStorage的数据,例如,在reconnectreconnect同步。