2012-11-08 11 views
5

Pracuję na jednej stronie aplikacji szkieletowej, która będzie korzystać z gniazd internetowych. Aplikacja jest dość złożona, z 6 lub więcej głównymi obszarami (ekranami).Czy jednostronicowa aplikacja internetowa powinna utrzymywać jedno połączenie sieciowe z serwerem lub kilkoma?

Składnia gniazd internetowych wydaje się dość prosta i zastanawiam się teraz nad architekturą.

Czy korzystanie z gniazd internetowych jest najbardziej wydajne w przypadku pierwszego podejścia lub drugiego podejścia?

: Otworzyć pojedynczy websocket do komunikacji na żywo z dowolnego serwera, na dowolnym ekranie lub obszarze aplikacji, a następnie filtrować te wiadomości po stronie klienta?

lub ...

: Otwieranie wielu WebSockets w czasie, w którym każdy websocket reprezentuje jakiś obszar funkcjonalności w aplikacji

(widziałem na tej stronie, ale to o po stronie serwera i jestem zainteresowany stroną klienta: What is the best practice for WebSocket server(s)?)

Aktualizacja: serwer korzysta z Jetty (technologii Java podobnej do Tomcat).

+1

Użyłbym jednego połączenia, chyba że miałeś konkretny powód, żeby tego nie robić. Istnieją również ograniczenia dotyczące liczby połączeń otwartych jednocześnie. – Brad

Odpowiedz

2

Otworzyłbym tylko jedno połączenie, łatwiejsze do zarządzania. Aby ułatwić debugowanie, możesz nazwać wszystkie swoje zdarzenia nazwą obszaru. Również socket.io obsługuje przestrzeń nazw, patrz sekcja "Ograniczanie się do przestrzeni nazw" tutaj http://socket.io/#how-to-use.

Także jeśli robisz dużo komunikacji ze swoim websocket można go wyłączyć z API widoczność, np tutaj: https://developer.mozilla.org/en-US/docs/DOM/Using_the_Page_Visibility_API

1

Nie bezpośrednią odpowiedź na Twoje pytanie, ale skoro mówisz, że używasz na kręgosłup klient i zakładając, że używasz węzła na serwerze (jeśli nie, może to być przekonujący argument), być może interesuje Cię this article, który szczegółowo omawia udostępnianie danych modelu między klientem a (węzłem) serwer do synchronizacji stanu. Szkielet, na wypadek gdybyś nie wiedział, może być zainstalowany jako moduł w węźle.

Ponieważ Twoja aplikacja jest, jak sam opisujesz, dość złożona, prawdopodobnie skorzystasz z możliwości współdzielenia tego samego złożonego modelu bezpośrednio między klientem a serwerem.

Powiązane problemy