NodeJS problem z wieloma zalogowanymi osobami przy io.emit

0

Witam,
Uczę się tworzyć strony w nodejs i zatrzymałem się przy takim problemie. Używam express i socket.io do komunikacji serwer <-> przeglądarka. Użytkownik loguje się i jego dane mogę pobrać z req. Chcę je mu odesłać, żeby mógł np. zobaczyć swój nick w taki sposób:

app.get('/test', function(req, res,next) {  
    
	res.sendFile(__dirname + '/public/test.html');

	io.on('connection', function(client) {  
	
		client.on('dawajnick', function(msg){
				client.emit('nick', req.user.nick);
				client.emit('steamID', req.user.steamid);
		});

	});
});

i on odbiera:

<script>
var socket = io.connect();
socket.on('nick', function(nick){
			   
				document.getElementById('nick').innerHTML = "Twój nick to: " + nick;
				 
			});

function DawajNickButtonClicked(){
			   socket.emit('dawajnick');
			 }


</script>

Problem pojawia się, kiedy zaloguje się druga osoba w tym samym czasie. Wtedy nodejs z req bierze ostatnią osobę, która weszła na tą stronę /test, przez co wcześniejsza osoba, która nie odświeżyła strony i nacisnęła przycisk Dawaj Nick, otrzymuje nick osoby, która jako weszła jako ostatnia. W jaki sposób na serwerze wysłać poprawny nick tak, żeby za każdym razem zgadzał się z osobą, która go chce otrzymać?

0

A czy nie możesz wykorzystać po prostu mechanizmu sesji?

0

Też się uczę, ja zapisuje sobie każde wejście na serwer dając każdemu socketowi id np
Materandom
do tablicy np SOCKET_LIST
A jak chce pobrać jakieś dane danej osoby to otwieram tablice
SOCKET_List[id]
I wygląda to mniej więcej tak
Jak client robi disconnect to usuwamy go z tablicy :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1