Dobra, więc próbowałem zbudować coś podobnego do aplikacji w czasie rzeczywistym (coś, co otrzymuje nowe dane z bazy danych, gdy tylko zostanie dodany), a jedyne rozwiązanie, które mogłem wymyślić, był stale przy użyciu żądań AJAX (za pośrednictwem Setinterval () Metoda w JavaScript), aby sprawdzić nowe informacje co kilka sekund, ale byłem ciekawy, jakie rodzaj szczepu umieściłoby bazy danych lub serwera.

Robiłby coś takiego, może być przesadnie lub jest lepsza metoda budowania aplikacji w czasie rzeczywistym?

2
user1610484 13 wrzesień 2012, 21:07

3 odpowiedzi

Najlepsza odpowiedź

Twój problem sprowadza się do dwóch opcji, long polling lub short polling . W pierwszej opcji, żądanie {x2}} jest wysyłane do serwera. Serwer wyszukuje nowe aktualizacje. Jeśli zostanie znaleziony, zwraca to natychmiast. Inaczej śpi, powiedzmy przez 0,5 sekundy, po czym ponownie wyszukuje aktualizacje. To trwa dla określonego czasu, po czym wszystko jest w tablicy danych. O otrzymaniu odpowiedzi, JS może podjąć odpowiednią odpowiedź (jeśli tam jest niektóre dane, być może użyj tego do manipulowania DOM ) i wyślij kolejną prośbę, I to kontynuuje AD Infinitum. Ma to wadę, że konsumuje znaczne zasoby po stronie serwera. Ale jeśli chcesz, aby nowe aktualizacje odzwierciedlały niemal natychmiast (jak na Facebooku), może to być najlepszy zakład.

W drugiej opcji, jak wspomniałeś, ładunek po stronie serwera jest w porządku. Ale czas potrzebny na odzwierciedlenie aktualizacji może być więcej. Plus, jeśli szybkość internetu użytkownika jest powolna, doda do opóźnienia. Nie wspominając o tym, że powtarzające się żąda moich odpadowych przepustowości użytkownika (chociaż można go złagodzić, jeśli zaprojektujesz witrynę, aby zapewnić tylko minimalne dane). WebSockets API mogą być wygodne, ale zgodnie z moją najlepszą wiedzą, nie jest w pełni obsługiwane we wszystkich przeglądarkach, z wyjątkiem ich najnowszych wersji.

3
SexyBeast 5 październik 2012, 19:01

Jeśli możesz użyć HTML 5 dla aplikacji, polecam gniazda internetowe.

http://www.websocket.org.

0
Steven Hunt 13 wrzesień 2012, 17:10

Lepszym podejściem jest użycie gniazd internetowych lub podobnych.

Zobacz na przykład, Ratchet.

0
D'Arcy Rittich 13 wrzesień 2012, 17:10