![]() |
![]() |
-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ę. |
|
|
![]() |
-WideSky- |
![]()
Post
#2
|
Goście ![]() |
Czyli potwierdzają się moje przypuszczenia, że albo serwlet, albo kiepska wydajność.
Mógłbyś mi powiedzieć, na jakiej zasadzie zbudowany jest ten Twój shoutbox? Przeglądarka co jakiś czas wysyła do serwera zapytanie sprawdzające czy jest jakaś ostatnia wiadomość? Jeśli tak, to co jaki? Czy to nie obciąża całej aplikacji? (Widzę, że dość płynnie chodzi, na pewno długo nad tym pracowałeś). Zapisujesz jakoś czas ostatniej wiadomości i porównujesz? jeśli tak, to gdzie? Dzięki z góry za jakieś podpowiedzi. P.S. Tak sobie uruchomiłem klienta pocztowego Gmail i widzę, że tam dynamicznie przychodzą wiadomości, wcale nie muszę nic klikać żeby zobaczyć nowe. Tylko że tam opóźnienia rzędu 1 sekundy nie grają roli, a u mnie tak. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 10.10.2025 - 08:39 |