Losowe powiadomienia

0

Problem został usunięty po przywróceniu starej wersji kodu serwera websocket. Czy ktoś jest w stanie powiedzieć czemu powiadomienia trafiały nie do tych osób co trzeba? Tutaj jest diff pliku realtime.py: https://github.com/adam-boduch/coyote-ws/compare/token-auth...master#diff-d6178f7a83f63ff06c2da5352b7ce4c7R1

W skrócie: w starej wersji kodu jest tak, że do serwera websocket przesyłany jest zaszyfrowany token, który zawiera ID użytkownika. W nowej wersji natomiast ID sesji odczytywane jest z cookies. Mając ID sesji (sesje przechowywane są w redis) możemy odczytać ID użytkownika. Ten "nowy" sposób nie działa prawidłowo i nie mam pojęcia dlaczego :|

0

Trudno mi coś powiedzieć bo pythona nie znam jak pisałem wyżej. Mogę jedynie opisać jak ja to robię. Przy logowaniu generuje jwtoken, tak samo gdy wygaśnie już też generuje go ponownie. przy tworzeniu połączania do serwera websocketów wysyłam ten token. Serwer wyciąga z niego id i dołącza użytkownika do kanału o nazwie user.{id}. Laravel wysyła powiadomienie do każdego usera osobno przez redisa a nazwa eventu docelowego np notfication leci z danymi, później serwer websocketów po odczytaniu informacji od redisa wysyła informacje do odpowiedniego usera poprzez to, że każdy jest podłączony do serwera osobnym kanałem, oczywiście też nazwę eventu wyciąga z danych i wysyła już jako odpowiedni parametr. Także z tego jak widzisz nigdzie nie trzymam listy podłączanych userów, opieram się o mechanizmy zawarte w bibliotece socket.io noda. Może właśnie problem leży w trzymaniu tych danych w redisie zamiast w serwerze pythonowym?

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