Witam, piszę aplikację w node.js gdzie używam socket.io aby w czasie rzeczywistym aktualizować listę powiadomień zalogowanego użytkownika, która umieszczona jest na aplikacji PHP. Mam problem, ponieważ loguję się na stronę i chcę przekazać to id zalogowanego użytkownika przez PHP do node. Próbowałem to zrobić juz w ten sposób:
(klient)
var loggeduser_Id = {{ id usera z twiga }};
socket.emit('user id', loggeduser_Id);
(serwer)
io.sockets.on('connection', function(socket) {
socket.on('user id', function(data) {
var user_id = data;
//jakieś działania
}
}
Tylko chyba ta metoda nie jest zbyt bezpieczna (żeby ktoś nie wbił się na powiadomienia innego użytkownika - np. curl) i wydajna. Czytałem też na internecie o współdzieleniu sesji pomiędzy node a PHP używając redisa, zainstalowałem to nawet, ale nie wiem czy warto instalować całe oprogramowanie tylko po to, aby przekazać jedną zmienną. Jest jakiś sposób aby to w miarę prosty, bezpieczny i najbardziej wydajny sposób przekazać?
Drugie pytanie dotyczy samych socketów, mianowicie jeśli zrobię tak jak w przykładzie powyżej, to musiałbym dla każdego usera robic socket.emit(inna nazwa, data); Np.
(klient)
var loggeduser_Id = {{ zmienna z twiga }}
socket.emit('user id', loggeduser_Id);
socket.on('pw'+loggeduser_Id, function(data) {
$('.pw').html(data);
count_pw = parseInt(data);
});
(serwer)
io.sockets.on('connection', function(socket) {
socket.on('user id', function(data) {
var user_id = data;
io.sockets.emit('pw'+user_id, jakas_zmienna);
}
}
I gdybym miał np. 1000 użytkowników zalogowanych, to czy robienie 1000 różnych emitów jest wydajne? A jeśli nie to czy jest jakiś inny sposób aby przekazać to jednym nie nadpisując przy tym tego emita?
Nie hejtujcie, jeśli napisałem coś głupiego, siedzę w node niecały tydzień dopiero :p .