2012-09-04 24 views
5

Sto usando SignalR in IE9 e, sfortunatamente, si deve degradare all'utilizzo della connessione frame per sempre.SignalR - Forever Frame in IE smette di funzionare dopo alcuni minuti di inattività

Ho passato un po 'di tempo a guardare questo con gli strumenti per sviluppatori in IE. Riesco a vedere i callback che vengono caricati nell'IFrame inserito dinamicamente e chiamano la funzione di ricezione nel plug-in SignalR. Tuttavia, dopo circa 20/30 di questi, non risponde più: non posso più chiamare script client dal server.

Suppongo che il carico di IFrame sia finalmente scaduto, ma sembra che non ci siano eventi generati per questo, quindi non posso forzare una riconnessione.

Qualcuno è riuscito a ottenere una robusta connessione SignalR funzionante in IE?

Grazie :)

+1

Quale versione di SignalR stai usando? L'ho sempre osservato in IE9 nelle versioni precedenti di SignalR, ma non lo vedo più a partire da 0.5. –

+1

Lo vedo anche su IE9 con 0.5.3 su JabbR, ho dovuto passare a longPolling per renderlo affidabile. Non è stato in grado di scoprire esattamente cosa sta succedendo ancora. –

+0

@DrewMarsh Sto usando la versione più recente su NuGet - 0.5.3 – Kram

risposta

1

Ogni volta che ho visto questo accada, in realtà ho avuto canaglia, i processi di zombie IE9 in esecuzione in background. Non avevano nemmeno una finestra associata a loro. Quindi, andrei a uccidere quegli zombi e rilancio di una nuova istanza di IE e non avrò un problema per molto tempo fino a quando l'anamolico non farà accadere di nuovo il problema.

Suoni impazziti Lo so, ma ho speso molto tempo a spiegare a David Fowler i sintomi del problema e come mai non avrei potuto vedere alcun motivo per cui l'iFrame smettesse magicamente di sparare all'evento per far sapere al trasporto di iniziare il prossimo sessione iFrame. I messaggi SignalR terminavano sempre correttamente il flusso di messaggi logici, l'evento onreadystatechange smetteva semplicemente di sparare.

+0

Quindi, al momento, non esiste una soluzione per questo problema in questo momento? oltre a uccidere vecchie attività ie9 nel tuo task manager? =/Ho anche lo stesso problema in Safari – anthonypliu

+0

Il problema che stavo vivendo, no ... era qualcosa con il modo in cui l'iframe funzionava all'interno di IE che avrebbe semplicemente interrotto gli eventi di cambio di stato pronti per tornare alla finestra principale finché non avessi ucciso il cattivo processo di IE. –

8

Abbiamo riscontrato un problema in cui il Javascript su un sito Web smetterebbe di funzionare, in particolare abbiamo notato che le chiamate Ajax non funzionavano. Dopo alcune indagini abbiamo scoperto che SignalR era la causa del crash e abbiamo trovato questo post su Forever Frames. Abbiamo provato a rimuovere Frames Sempre sostegno SignalR con il seguente codice nel client JavaScript:

$.connection.hub.start({ transport: ['webSockets', 'serverSentEvents', 'longPolling'] }); 

Quindi solo supportando WebSockets ', 'serverSentEvents', 'longPolling'.

+0

Oppure puoi impostare un timeout dopo 1-2 minuti, quindi il client deve riconnettersi. –

+0

Crash? Cosa significa crash in questo contesto – davidfowl

+0

Post modificato per la precisione. Arresti anomali di JavaScipt: le altre chiamate Ajax smetterebbero di funzionare (in particolare un'azione che restituirebbe una vista parziale in una chiamata Ajax sarebbe invece reindirizzata a una nuova pagina). – Doff3n

1

Secondo this Problema di Github risolto in jQuery 1.10.1.

Il problema è stato introdotto in 1.9.x e corretto su 1.10.1.

In esecuzione con JQuery 1.8.1 sembra funzionare anche.

Soluzione: Aggiornamento jQuery

0

Mettere questo nel documento evento pronto e tutti i vostri problemi iframe sarebbe risolto:

$.connection.hub.start({ transport: ['webSockets', 'serverSentEvents', 'longPolling'] });