Domanda

Qualcuno può farmi sapere come funziona SignalR internamente in modo alto livello?

Sono indovinando si scarichi i dati utilizzando Response.Flush e al lato client che sta inviando richieste Ajax a determinati intervalli. È corretto?

È stato utile?

Soluzione

No, SignalR è un'astrazione tramite una connessione. Ti dà due modelli di programmazione oltre che di collegamento (hub e le connessioni persistenti). SignalR ha un concetto di trasporti, ogni trasporto decide come i dati vengono inviati / ricevuti e come si connette e si disconnette.

SignalR ha pochi costruita nei trasporti:

  1. WebSockets
  2. Sent Server Eventi
  3. Per sempre Telaio
  4. Long polling

SignalR cerca di scegliere la connessione "migliore" supportato dal server e client (è anche possibile forzarlo ad utilizzare un trasporto specifico).

Questo è il livello alto. Se volete vedere come ogni trasporto è implementato, è possibile guardare il il codice sorgente .

C'è anche il codice client per ogni trasporto: https://github.com/SignalR/SignalR/tree/master/ src / Microsoft.AspNet.SignalR.Client.JS

Se stai chiedendo su come il trasporto di polling lungo opere in particolare:

Si invia una richiesta AJAX al server che sta aspettando in modo asincrono per un segnale di rispondere. Quando c'è un segnale o di richiesta timeout, restituisce dal server e invia un'altra richiesta ed il processo continua. (Ho lasciato alcuni dettagli fuori su come il cliente tiene traccia di ciò che ha visto in modo da non perdere messaggi)

Si spera che le risposte la maggior parte della tua domanda.

Altri suggerimenti

@davidfowl ha già risposto la parte principale. Tuttavia, per fornire qualche dettaglio in più per quanto riguarda la differenza di comportamento dei trasporti, in particolare tra WebSocket e altri trasporti; di seguito sono alcuni punti.

  • WebSocket è l'unico mezzo di trasporto che stabilisce un vero persistente, connessione bidirezionale tra client e server. Tuttavia, WebSocket è supportato solo da IIS 8 o superiore, e le ultime versioni di Internet Explorer, Google Chrome e Mozilla Firefox.
  • Mentre Server eventi inviati, sempre SCEGLI e Long sondaggi, tutti e tre seguono una comunicazione a senso unico, e sono supportati dalla maggior parte dei browser.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top