![]() |
![]() |
-WideSky- |
![]()
Post
#1
|
Goście ![]() |
Witam.
Zastanawiam się nad technologią shoutboxa. Chciałbym zrobić coś w rodzaju chatu. Ma to działać tak: W przeglądarce X ktoś wykonuje akcję (przykładowo wysyła wiadomość o jakiejś treści). W tym samym czasie w przeglądarce Y (na innym komputerze lub na tym samym, to nie gra roli) chcę, żeby ktoś otrzymał tę właśnie wiadomość. Oczywiście konieczne będzie przesłanie tej wiadomości do bazy. Moje pytanie brzmi: co dalej? Nie widzę innego sposobu, jak tylko ustawić timeout w przeglądarce na jakąś wartość i co pewną ilość milisekund wykonywać zapytanie sprawdzające, czy przypadkiem nie ma jakichś nowych wiadomości które należy wyświetlić użytkownikowi. Tylko powstaje problem - już przy 10 użytkownikach zacznie się robić sieczka, jeśli każdy powiedzmy co 250 milisekund będzie próbował wysłać do bazy zapytanie. A aplikacja docelowo ma działać na znacznie więcej uzytkowników niż 10, do tego taki chat nie będzie jedyną jej funkcją, a tylko dodatkiem - cała reszta (spora) będzie uzywać tej samej bazy. Według mnie to będzie masakrycznie obciążające, i nie będzie działać w czasie rzeczywistym. A szczególnie zależy mi na tym, żeby opóźnienia nie były duże, 1 sekunda to już za dużo. Jest jakieś inne wyjście? Poza tym drugim moim problemem jest to, że ustawianie w przeglądarce czasu, co jaki ma się wykonywać zapytanie, wydaje mi się jakieś nieeleganckie, a na pewno obciąża już nawet samą przeglądarkę... Nie da się od razu po wysłaniu wiadomości do bazy przez kogoś pobierać odpowiednie dane? A nie sprawdzać co określony czas, czy jest coś nowego? Chodzi o to, żeby przy małej aktywności uzytkowników (na przykład nocą) ich przeglądarki nie wysyłały masy niepotrzebnych zapytań. No i o to, że trudno ustalić wartość tego timeoutu, 250 milisekund to w pewnych sytuajcach za często, a w pewnych za rzadko. I wolałbym, gdyby od razu po zmianie zawartości bazy (czy jakiegoś pliku, jeśli istnieje taki sposób dla plików, a nie istnieje dla baz), wszyscy inni pobierali tę zaktualizowaną zawartość. Nie wiem, czy się jasno wyraziłem, ale mam nadzieję, ze ktoś mnie zrozumie. Jest jakieś rozwiązanie dla mnie? Chociaż jakiś kompromis? (Tak, wiem, jest - napisać serwle Javy (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) A jakieś inne? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ) Dziękuję za uwagę. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Przeglądarka co jakiś czas wysyła do serwera zapytanie sprawdzające czy jest jakaś ostatnia wiadomość? Jeśli tak, to co jaki? To u mnie jest parametryzowalne. Kazdy kto sie zainstaluje mego shouta moze sobie ustawić. U mnie teraz jest chyba 10s. W zupelnosci wystarcza.Cytat Czy to nie obciąża całej aplikacji Pobieram tylko nowe wiadomosci. Jak nie ma nic nowego to do bazy nawet nie lece.Cytat Zapisujesz jakoś czas ostatniej wiadomości i porównujesz? jeśli tak, to gdzie? W zmiennej js, a gdziezbys indziej? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 10.10.2025 - 08:31 |