2014-09-01 7 views
9

Sto utilizzando il polling lungo con SignalR. Ho trovato che la sessione utente termina (viene chiamato ASP.NET Session_End) subito dopo la pagina web singalr rende /signar/ping request (as shown in this screenshot). Sono passato a http://www.asp.net/signalr/overview/signalr-20/hubs-api/handling-connection-lifetime-events ma non sono riuscito a capire risposte chiare a seguito di domande.Uso della chiamata/signal/ping quando si utilizza il polling lungo

  1. Come mantenere viva la sessione utente ASP.net da una pagina Web client signalr?
  2. Qual è lo scopo effettivo di/ping?
  3. I tempi per questa chiamata/ping sono configurabili?

risposta

13

L'intero scopo della richiesta/signalr/ping è di mantenere vivi le sessioni ASP.NET. Rendendo le richieste su un intervallo regolare più breve del timeout della sessione, la sessione non dovrebbe mai scadere poiché il server deve reimpostare il timeout su ciascuna richiesta.

Nel caso del trasporto di polling lungo, questo non è probabilmente necessario poiché SignalR imporrà un nuovo sondaggio lungo almeno ogni 110 secondi, data la configurazione predefinita. Anche così, SignalR effettuerà una richiesta ping ogni 5 minuti per impostazione predefinita, indipendentemente dal tipo di trasporto utilizzato. Questo intervallo di 5 minuti è abbastanza piccolo da gestire il timeout della sessione di 20 minuti predefinito di ASP.NET.

È possibile modificare l'intervallo di 5 minuti ping per un valore personalizzato nella chiamata a $.connection.hub.start in questo modo:

// Configure SignalR to ping the server every minute 
$.connection.hub.start({ pingInterval: 60000 })//... 

Il valore di default è pingInterval 300000 millisecondi (5 minuti). È possibile disabilitare il ping impostando pingInterval su null.

+0

grazie halter73, esattamente quello che stavo cercando. –

+0

@ halter73, stai dicendo che il polling lungo manterrà in vita la sessione ASP.NET e quindi, se accade più frequentemente del tempo di ping, il ping non è necessario? – Mark

+2

@Mark Right. Il ping non dovrebbe essere necessario con lunghi polling perché il trasporto invia già richieste frequenti, ma SignalR invierà comunque richieste ping. – halter73