一種方法是生成一個隨機UID並將其保存到本地存儲。在客戶端連接之後,將此UID發送到服務器並檢查該UID是否作爲連接用戶存在。在服務器端,在斷開連接時設置超時時間,使用戶在從「用戶在線」數據中刪除其唯一UID之前15秒左右。
客戶:
// When the client starts, create the uid.
localstorage.setItem('uUID', Math.random().toString(24) + new Date());
// Emit the UID right after connection
socket.emit('userLogin', localstorage.getItem('uUID');
服務器:
var currentUIDS = [];
var userIsConnected = true;
io.sockets.on('connection', function (socket) {
var currentUID = null;
socket.on('userLogin', function (data) {
if (data !== null) {
if (currentUIDS.includes(data)) {
userIsConnected = true;
currentUID = data;
}
}
});
socket.on('disconnect', function() {
userIsConnected = false;
setTimeout(function() {
if (!userIsConnected) currentUIDS.pop(currentUID);
}, 15000);
});
});
這不符合工作因爲'currentUIDS'和'u serIsConnected'是全局變量,並不是特定於當前會話 – andreasonny83 2016-01-03 23:30:58