Zobacz także tę prezentację na NDC 2013 Davida Fowlera i Damiana Edwardsa zatytułowaną „Pod okładkami z ASP.NET SignalR”, w której budują na żywo na scenie lite wersję SignalR. To bardzo pouczające. To wersja starsza niż 2.0, ale to nie powinno mieć większego znaczenia. vimeo.com/68383353
Johan B
Odpowiedzi:
241
Nie, sygnalizujący to abstrakcja w połączeniu. Zapewnia dwa modele programowania dla tego połączenia (koncentratory i połączenia trwałe). SignalR ma koncepcję transportów, każdy transport decyduje o sposobie wysyłania / odbierania danych oraz w jaki sposób łączy się i rozłącza.
SignalR ma kilka wbudowanych transportów:
WebSockets
Zdarzenia wysłane przez serwer
Rama na zawsze
Długie odpytywanie
SignalR próbuje wybrać „najlepsze” połączenie obsługiwane przez serwer i klienta (można również wymusić użycie określonego transportu).
To jest wysoki poziom. Jeśli chcesz zobaczyć, jak zaimplementowano każdy transport, możesz spojrzeć na kod źródłowy .
Jeśli zastanawiasz się, jak działa w szczególności transport z długimi ankietami:
Wysyła żądanie AJAX do serwera, który oczekuje asynchronicznie na odpowiedź sygnału. Gdy pojawi się sygnał lub żądanie przekroczy limit czasu, wraca z serwera i wysyła kolejne żądanie, a proces jest kontynuowany. (Zostawiłem kilka szczegółów na temat tego, jak klient śledzi to, co widział, aby nie przegapić wiadomości)
Mam nadzieję, że to odpowiada na większość Twoich pytań.
czy możesz mi powiedzieć, ile połączeń jest w stanie obsłużyć jednocześnie?
Farhad-Taran
1
Liczba połączeń, które sygnalizujący będzie obsługiwać, zależy od limitu żądań usług IIS. Można go zwiększyć za pomocą wpisów konfiguracyjnych lub skryptów powłoki. Zwykle Signalr buforuje w pamięci 1000 połączeń.
@davidfowl odpowiedział już na większą część. Jednakże, aby podać więcej szczegółów dotyczących różnic w zachowaniu transportów, w szczególności między WebSocket i innymi transportami; poniżej znajduje się kilka punktów.
WebSocket to jedyny transport, który ustanawia prawdziwe trwałe, dwukierunkowe połączenie między klientem a serwerem. Jednak WebSocket jest obsługiwany tylko przez IIS 8 lub nowszy oraz najnowsze wersje przeglądarek Internet Explorer, Google Chrome i Mozilla Firefox.
Podczas gdy zdarzenia wysłane przez serwer, zawsze ramka i odpytywanie długie, wszystkie trzy podążają za komunikacją jednokierunkową i są obsługiwane przez większość przeglądarek.
Odpowiedzi:
Nie, sygnalizujący to abstrakcja w połączeniu. Zapewnia dwa modele programowania dla tego połączenia (koncentratory i połączenia trwałe). SignalR ma koncepcję transportów, każdy transport decyduje o sposobie wysyłania / odbierania danych oraz w jaki sposób łączy się i rozłącza.
SignalR ma kilka wbudowanych transportów:
SignalR próbuje wybrać „najlepsze” połączenie obsługiwane przez serwer i klienta (można również wymusić użycie określonego transportu).
To jest wysoki poziom. Jeśli chcesz zobaczyć, jak zaimplementowano każdy transport, możesz spojrzeć na kod źródłowy .
Istnieje również kod klienta dla każdego transportu: https://github.com/SignalR/SignalR/tree/master/src/Microsoft.AspNet.SignalR.Client.JS
Jeśli zastanawiasz się, jak działa w szczególności transport z długimi ankietami:
Wysyła żądanie AJAX do serwera, który oczekuje asynchronicznie na odpowiedź sygnału. Gdy pojawi się sygnał lub żądanie przekroczy limit czasu, wraca z serwera i wysyła kolejne żądanie, a proces jest kontynuowany. (Zostawiłem kilka szczegółów na temat tego, jak klient śledzi to, co widział, aby nie przegapić wiadomości)
Mam nadzieję, że to odpowiada na większość Twoich pytań.
źródło
@davidfowl odpowiedział już na większą część. Jednakże, aby podać więcej szczegółów dotyczących różnic w zachowaniu transportów, w szczególności między WebSocket i innymi transportami; poniżej znajduje się kilka punktów.
źródło