考えられる解決策の1つは、ソケット接続と切断イベントをリッスンするようなsocket.ioサーバー側のイベントに反応することです。
これは最も簡単な解決策です。サーバーがクラッシュし、切断イベントが発生しない場合に問題が発生します。このような問題を回避するために、間隔チェックを作成することができます。間隔チェックは開かれたソケットをチェックし、ユーザーがDBで開いたり閉じたりして、変更があれば更新します。
クライアント側:
var socket = io("http://127.0.0.1:3000/", { query: "id=434354fds43" });
サーバー側:
var io = require('socket.io')(80);
var users = {};
io.use(function (socket, next) {
console.log('Query: ', socket.handshake.query);
var id = socket.handshake.query.id;
if (id) {
users[socket.id] = id;
return next();
}
// call next() with an Error if you need to reject the connection.
next(new Error('Authentication error'));
});
io.on('connection', function (socket) {
// New connection, get the ID from map
var id = socket.id;
socket.on('disconnect', function() {
// User left
delete users[id];
});
});
私はsocket.server.js' 'でイベントを切断するためのユーザー名を渡す必要があります。 client.jsからパラメータを渡す方法 –
クライアントからサーバへデータを渡す方法の例を追加しました。 –