하나의 가능한 솔루션은 소켓 연결 및 연결 끊기 이벤트 수신과 같은 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에서 매개 변수를 전달하는 방법 –
클라이언트에서 서버로 데이터를 전달하는 방법에 대한 예제가 추가되었습니다 (예 : 사용자 ID 포함). –