chcę stworzyć aplikację, coś ala chat z facebooka. Nasunęło mi się kilka pytań i liczę na Waszą pomoc. Chce działać w oparciu o Ratchet (server WS w php), a więc do rzeczy.
1) Logowanie do chatu.
- osoba która loguje się do chatu, przesyła przez WS swoje dane do logowania,
- server sprawdza, czy dane są poprawne,
- jeżeli są, dodaje token do bazy danych (dowiązuje go do aktywnego połączenia) i wysyła użytkownikowi. Javascript odczytuje token i zachowuje w zmiennej.
Jest jeszcze możliwość użycia sesji. "Important: Sessions through WebSockets work as they do through a traditional webserver; a cookie is set and transmitted in each request header. This means that your website and your WebSocket server both must have access to the cookie.".
Nie wiem czy dobrze rozumiem, czy nagłówki wysyłane są przy każdej wiadomości? Czy rozwiązanie które zaproponowałem jest poprawne (pod względem bezpieczeństwa i prędkości działania aplikacji), czy jednak powinienem użyć sesji, lub całkowicie czegoś innego?
2) Wysyłanie wiadomości (JSON).
Gdy użytkownik przeszedł autoryzację, może wysyłać wiadomości, w których przekazywany jest token oraz id usera do którego ma dojść wiadomość (id zapisane w bazie danych, ponieważ można wysyłać wiadomości do osób, które nie są zalogowane).
- server sprawdza czy token jest powiązany z aktywnym połączeniem, które ten token otrzymało (łączy się z baza danych, i sprawdza czy wpis istnieje),
- jeżeli tak, to wysyła wiadomość oraz zapisuje ją w bazie, jeżeli nie zwraca błąd.
3) Konferencje lub chat roomy.
- Użytkownik wysyła id konferencji lub chatroomu w wiadomości do servera,
- server sprawdza id konferencji w bazie danych i wysyła wiadomość do przypisanych użytkowników.
To jest mój jedyny pomysł jak mogłoby to wyglądać, czy tak będzie dobrze?
4) Kto jest online.
Osoba która się dołącza, dodawana jest do bazy, a zaktualizowany status wysyłany do już zalogowanych.
Ktoś, kto się łączy pobiera z bazy osoby online.
Przy rozłączaniu wpis z bazy jest kasowany (czy może jednak lepiej przechowywać wpisy i tylko je aktualizować?), a do osób na chacie wysyłany jest zaktualizowany status użytkownika.
Proszę o podpowiedzi co do logiki działania takiej aplikacji. Po Waszej weryfikacji, zacznę od zaprojektowania bazy danych i wstawię tutaj jakiś szkic do sprawdzenia.
Z góry wielkie dzięki za pomoc
