Wpis z mikrobloga

Drugi dzień już walczę z websocketami i dalej efektów brak. Generalnie na razie chcę to uruchomić żeby mi po prostu cokolwiek się wyświetlało.

Plan mam taki: użytkownik na stronie z użyciem JS nawiązuje połączenie websocket z websocketem napisanym w PHP i odpalonym na stałe z konsoli. Także pytanie numer 1: czy takie coś w ogóle ma sens?

Takiego połączenia chcę używać do powiadomień o nowej wiadomości w serwisie. Informacje czy jest nowa wiadomość będzie pochodziła z bazy danych. I teraz pytanie numer 2: skrypt PHP będzie w pętli ciągle sprawdzał bazę danych w poszukiwaniu nowych wiadomości? Trochę to mało wydajne...

Pytanie numer 3 najbardziej ogólne: na początku miałem pomysł, żeby to zrealizować w taki sposób, że gdy user B wyśle wiadomość do usera A, to przy dodawaniu wiadomości do bazy danych, wywoływana jest funkcja (funkcja po stronie serwera PHP ofc) która wysyła w jakiś sposób (websockets?) powiadomienie do przeglądarki użytkownika A.

Krótko mówiać: Mirki ratujcie!

#webdev #javascript #websocket #php
  • 10
@Zaszczyk:

1. tak, w taki sposób nawiązujesz połączenie

2. nie, tak nie powinno być, w ws masz akcje i reakcje, np. zapisujesz coś w bazie i jednocześnie wysyłasz zapisane dane dzięki ws do połączonych użytkowników

3. czyli to co napisałem powyżej :)
@bylek7: nie wprowadzaj kolegi w błąd, nie musi stawiać node.js, żeby działały mu websockety, po stronie PHP też da się to zrobić (pomijam kwestię wydajności obu rozwiązań)

@Zaszczyk: dokładnie zrób tak jak mówi @Zalazdi czyli podczas zdarzenia onopen wysyłaj id użytkownika
@cinoo: tak mi też w głowie świtało, tylko że ktoś może dać fałszywe (nie swoje id). Po stronie skryptu PHP z socketami $SESSION nie będą dostępne dla każdego użytkownika, więc nie mam pomysłu jak zweryfikować id usera. Mogę zapisywać sessionid w bazie i zdarzeniem onopen wysyłać session_id i id usera, ale to kolejna komplikacja...
@Zaszczyk: Komplikacja nie taka wielka, jak się wydaje. Dwa jednolinijkowe zapytania i gotowe. Inne rozwiązania, jakie mi do głowy przychodzą, są dużo bardziej rozbudowane.