Wzorzec obserwatora przez HTTP i TCP / IP (klient-serwer)


9

Mam serwer i wielu klientów (około 50 klientów), którzy łączą się z tym serwerem w oparciu o aplikację internetową, która oczywiście oparta jest na protokole HTTP, który z kolei używa protokołu TCP / IP (popraw mnie, jeśli się mylę, bo ja nie jestem naprawdę dobry w sieci).

Problem polega na tym, że powinienem opracować mechanizm ostrzegania, w którym gdy ktoś prześle formularz z niebezpiecznymi wartościami, menedżer (który jest również połączony za pośrednictwem tej samej aplikacji internetowej) powinien otrzymać na ekranie wyskakujące ostrzeżenie, prawie prawdziwe -czas (natychmiast).

Ponieważ jednak protokół HTTP jest bezstanowy, jestem trochę zdziwiony. Nie wiem jak to zaimplementować.

Jednym z rozwiązań może być użycie JavaScript wraz z setInterval()funkcją do pobierania danych z serwera co sekundę. Ale wydaje mi się to trochę brudne i nieprofesjonalne.

Czy macie jakiś pomysł na wdrożenie innego rozwiązania?



Jakiego rodzaju klienci? Cienkie (oparte na przeglądarce) klientów lub ciężkich klientów?
ysdx

@ysdx, pomyśl klientów. Klienci tylko z obsługą przeglądarki.
Saeed Neamati,

Odpowiedzi:


4

Powinieneś użyć pewnego rodzaju aneksu push (patrz kometa ), aby powiadomić klientów. Może to wyeliminować potrzebę odpytywania, po prostu utrzymuje otwarte połączenie, którego można użyć do powiadamiania przeglądarki o zaistniałych zdarzeniach. Nie działa to jednak we wszystkich przeglądarkach. W takich przypadkach wracasz do „długiego odpytywania”.


6

Myślę, że właśnie z tego powodu stworzono WebSockets . Jeśli nie potrzebujesz zgodności ze starszymi przeglądarkami, możesz użyć tej opcji zamiast sondowania. Prawdopodobnie powinieneś użyć sondowania jako rezerwowego.

Nie jestem pewien, jak stabilna jest specyfikacja / implementacje w tych dniach (jeszcze niedawno nie była bardzo stabilna). Wygląda na to, że najnowsza specyfikacja została zaimplementowana w Firefox 6 i Chromium 14.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.