Wiem, że socket.io ma wbudowaną funkcję ponownego połączenia i wszystko, ale nie sądzę, że działa - jak widziałem od innych, to również nie działa dla nich.node.js + socket.IO - gniazdo nie łączy się ponownie?
Jeśli użytkownik kładzie komputer w stan uśpienia, odłącza je, a gdy je otwiera, nie są już połączone, więc nie wysyłają żadnych powiadomień ani niczego, dopóki nie odświeżą strony. Być może to po prostu coś, czego nie robię poprawnie?
var io = require('socket.io').listen(8080);
var users = {};
////////////////USER CONNECTED/////
console.log("Sever is now running");
io.sockets.on('connection', function (socket) {
//Tell the client that they are connected
socket.emit('connected');
//Once the users session is recieved
socket.on('session', function (session) {
//Add users to users variable
users[socket.id] = {userID:session, socketID:socket};
//When user disconnects
socket.on('disconnect', function() {
//socket.socket.connect();
var count= 0;
for(var key in users){
if(users[key].userID==session)++count;
if(count== 2) break;
}
if(count== 1){
socket.broadcast.emit('disconnect', { data : session});
}
//Remove users session id from users variable
delete users[socket.id];
});
socket.on('error', function (err) {
//socket.socket.connect();
});
socket.emit("connection")
musi być wywołana, gdy użytkownik łączy się ponownie, lub przynajmniej wydarzenia, które zdarzają się w tym przypadku trzeba nazwać.
Również nie działa socket.socket.connect();
, zwraca błąd i zamyka serwer gniazda z błędem "connect nie istnieje".