私の考えの主な概念は、ユーザーがリロードまたは切断していることを知ることはできず、1 日ほど戻ってこないということです。ブラウザが Web サイトから離れていることを検出する方法はありますが、知ることはできません (サーバーで側) 同じアドレスに送信されるか、異なるアドレスに送信されるか..
代わりに、クライアントが切断された場合、もちろん切断イベントがそのソケットの socket.io サーバーに対して発生するため、セッション変数を false に設定できることを考慮して、プレーヤーが「切断された」と言うことができるので、クライアントがそのセッションの「再接続」別名リロードの場合、socket.io は「接続」イベントを発生させますが、セッション変数を読み取ると、クライアントが以前に切断されてから再度接続されたと言えます。タイムスタンプがこれに適用される可能性があるため、15 分後の再接続では追加のデータなどをロードする必要があります。
したがって、セッションでこれを試すことができます(エクスプレスなどを使用すると仮定します)
sockets.on("connection",function(socket){
if(session.isAReload){
// this is a reconnection
}
socket.set("isAReload",session.isAReload /*defaults to false*/);
});
sockets.on('close',function(){
socket.get('isAReload',function(err,isAReload){
if(isAReload){
// closed after reconnecting
}else{
/*
just closed connection, so next time it will be a "reload" or reconnection
a timer of lets say 30s could run to ensure that the client is reloading
*/
session.isAReload=true;
}
});
})