Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: web server socket
Forum PHP.pl > Forum > PHP
riko
Witam jestem nowy użytkowaniem tego forum mam problem dla którego zarejestrowałem się tu.
Chodzi mi to przykład na stronie http://code.google.com/p/phpwebsocket/ a konkretnie o serwer. Wszystko działa całkiem dobrze lecz chciałbym go nieco zmienić i dodać funkcje umożliwiającą wysyłanie wiadomości przez serwer do klienta co jakiś czas. W obecnej chwili serwer odpowiada tylko na wezwanie klienta.
Siedzę nad tym od piątku i nie potrafię wprowadzi takiej zmiany próbowałem wszystkiego i ciągle nie działa , a niestety innego działającego przykładu nie znalazłem. będę wdzięczny za pomoc
Zyx
Pierwsza zasada przy jakichkolwiek zabawach z siecią - najpierw naucz się, do czego służy dane rozwiązanie i jak działa, a później myśl, jak to wykorzystać. Zajrzyj sobie do specyfikacji websockets - nie ma tam ani słowa o odbieraniu przychodzących połączeń, więc jak niby wyobrażasz sobie odbiór takiego komunikatu od serwera? Po drugie, skąd serwer miałby wiedzieć, komu wysyłać wiadomość i jak rozwiązałbyś problem z przechodzeniem przez firewalle i NAT? Jeśli klient nie ma publicznego adresu IP w Internecie, ani nie ma zrobionego przekierowania portów, praktycznie nie ma szans się z nim połączyć z zewnątrz.

Jeśli chcesz utrzymać połączenie, to w PHP będzie Ci ciężko, gdyż nie ma tu obsługi współbieżności, a włączenie oczekiwania np. funkcją sleep() zamrozi cały serwer. Można wprawdzie kombinować z utrzymywaniem puli połączeń i okresowym sprawdzaniem, czy czegoś nie trzeba wysłać, ale moim zdaniem już lepiej wziąć język, który się o niebo lepiej nadaje do pisania oprogramowania stricte serwerowego.
riko
czytałem i czytałem o nowych rozwiazaniach. websockiets działają full duplex(w obie manki), http://www.kaazing.org/confluence/display/...TML+5+WebSocket wiec taka komunikacja jest możliwa nat to tez nie jest żadna przeszkoda
Zyx
Dalej nie rozumiesz, o czym mówię i na czym to polega. Nawiązanie połączenia, a transmisja w już utworzonym połączeniu TCP to dwie różne rzeczy. Przesłać dasz radę dane w obie strony, bo wynika to z fundamentalnych założeń działania TCP, ale musisz mieć otwarte połączenie. A w websockets klient może wyłącznie tworzyć połączenia, natomiast nie może odbierać przychodzących (np. od serwera).
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.