2011-10-12 10 views
11

Sto considerando di aggiornare un sito esistente per utilizzare SignalR. Il mio sito esegue il polling di un servizio di terze parti per le modifiche dei dati, esegue alcune operazioni magiche e i client eseguono il polling una volta ogni qualche minuto per aggiornare la visualizzazione con eventuali aggiornamenti.SignalR con connessioni inaffidabili o in pausa e ricollegate?

SignalR sembra un ottimo modo per eliminare il polling dal client, ma voglio sapere come SignalR gestisce le connessioni ricollegate &, in particolare per quanto riguarda le app Web mobili che potrebbero essere state sospese per qualche tempo. In questo caso, negozia automaticamente e accoda gli aggiornamenti che sono stati persi nel frattempo o il client ha bisogno di risincronizzare da zero? Ho guardato ma non ho trovato nessun documento su questo, quindi la guida sarebbe apprezzata.

risposta

10

Tutto ciò è sicuramente possibile poiché il client tiene traccia dell'ultimo messaggio che ha visto. Se succede di perdere i messaggi, li otterrà la prossima volta che ritorna al server (chiedendo tutti i messaggi dall'ultima che ha visto).

Per impostazione predefinita il lato server del SignalR memorizza i messaggi in memoria (ed elimina quei ogni pochi secondi), ma è possibile modificarlo a persistere per qualche archivio permanente (vedi IMessageStore) se stai pensando di andare offline e clienti recuperando.

Si potrebbe persino persistere i messaggi da soli nella propria logica dell'app mentre SignalR memorizza i dati in memoria. Dipende davvero dall'applicazione.

Non abbiamo aggiunto alcun supporto speciale per i client mobili, ma è possibile mantenere l'ID messaggio in qualsiasi spazio di archiviazione locale necessario per il client mobile.

Questi dettagli non sono molto specifici, ma ciò che si vuole fare è tutto possibile con SignalR.

+0

Cool, grazie. Credito extra: puoi indicarmi qualsiasi app/codice demo che faccia qualcosa di simile? –

+0

No, non posso :). SignalR è nuovo di zecca e non abbiamo ancora lavorato molto con i dispositivi mobili. – davidfowl

+0

Ah bene. Il fatto che sia mobile non è direttamente rilevante, ma è quello in cui puoi ** contare su ** interruzioni dalla rete (_ * cough * AT & T_), l'app che sospende/termina senza avviso, ecc. Sembra che abbia gli hook di basso livello necessari - ID nelle richieste, IMessageStore - per costruire il resto in cima a me stesso. Condividerò se posso generarlo sufficientemente! –

0

Understanding and Handling Connection Lifetime Events in SignalR Leggere, specialmente queste sezioni:

Tale documento è stato scritto nel 2014 e sostanzialmente obsoleto molte delle domande/risposte relative al SignalOverflow SignalR errate o incomplete dell'era 2011-2012.