JavaScript socket.io - falsche ID zum benutzer wird zurückgegeben

Gamer20

Lieutenant
Registriert
Dez. 2005
Beiträge
517
hi!

ich schreibe einen chat, beim dem rechts eine online(benutzer)liste ausgegeben wird.

leider gibt er mir nur beim login (1x IE und danach login mit FF (und anderem testkonto)) die korrekte ID aus:

Admin / 1

Testnutzer / 3

wenn ich dann beim IE F5 drücke, wird:

1. der nutzer aus der onlineliste entfernt (weil ja der browser für 1ms ja die verbindung abgebrochen hat, für den reload).
2. wieder rein genommen (als "neuer" login)

dann sieht die onlineliste so aus:

Admin / 3 (falsch, da admin die ID 1 hat)
Testnutzer / 1 (falsche ID)




Code:
...
	socket.on('new user', function(nickn,nicknid,callback)
	{


			callback(true);
			socket.nickname 		= nickn;
			users[socket.nickname] 	= socket;
			
			socket.nid 				= nicknid;
			usersid[socket.nid]		= socket;
			
			updateNicknames();

			io.sockets.emit('login', {msg: 'hat sich gerade eingeloggt', nick: socket.nickname + '/' + socket.nid});
		
	});

	
function updateNicknames()
{console.log('Konsolenausgabe: ' + Object.keys(users));
io.sockets.emit('usernames', Object.keys(users),Object.keys(usersid));
}

socket.on('disconnect', function(data)
{
if(!socket.nickname) return;
delete users[socket.nickname];
delete usersid[socket.nid];

updateNicknames();

io.sockets.emit('logout', {msg: 'hat sich gerade ausgeloggt', nick: socket.nickname + '/' + socket.nid});
});


......

bei der ausgabe im chatfenster für die unterhaltungen wird trotzdem immer die korrekte ID mit ausgegeben:

Code:
io.sockets.emit('login', {msg: 'hat sich gerade eingeloggt', nick: socket.nickname + '/' + socket.nid});

wo liegt da das problem?

oder gibt es eine andere variante die daten an den client zu senden (ohne den object.key befehl)?
 
Zuletzt bearbeitet:
Zurück
Oben