Ci sono alcuni modi per affrontare questo problema. Il primo è quello di creare le proprie variabili personali di monitoraggio dello stato della connessione, che si imposta con gli eventi di connessione di callback:
$.connection.hub.start().done(function() { ConnectionStarted = true; })
È possibile controllare ConnectionStarted prima di tentare di avviare la connessione. Sfortunatamente, questo non funzionerà bene, dato che start() è asincrono e così tante istanze potrebbero provare ad avviare una connessione prima che sia terminata e impostare ConnectionStart su true.
Quindi, soluzioni di lavoro. Ci sono due. In primo luogo, hanno ogni caso utilizzare un proprio oggetto di connessione (vale a dire: non utilizzare il $ .connection.hub di default, ma invece utilizzare manuale creatore di connessione:
var localConnection = $.hubConnection();
var localHubProxy= localConnection.createHubProxy('HubNameHere');
Questo non è grande, come la maggior parte dei browser hanno una numero limitato di connessioni consentite per pagina e anche perché è generalmente eccessivo.
IMO, la soluzione migliore è utilizzare la singola connessione automatica con proxy predefinito ($ .connection.hub) e controllare lo stato della connessione (qualcosa I appena trovato) Ogni oggetto di connessione ha uno stato:
$.signalR.connectionState
Object {connecting: 0, connected: 1, reconnecting: 2, disconnected: 4}
.210
Quindi, in ogni caso, andare a fare qualcosa di simile ?:
if ($.connection.hub && $.connection.hub.state === $.signalR.connectionState.disconnected) {
$.connection.hub.start()
}
Si noti inoltre che quando si crea una connessione, si siederà nello stato "disconnesso"/4 fino a inizio è chiamato su di esso. Una volta chiamato, la connessione cercherà apparentemente di riconnettersi costantemente (se viene interrotta) fino a quando non viene chiamato $ .connection.hub.stop() (tornerà quindi allo stato "disconnected").
Refs:
http://www.asp.net/signalr/overview/hubs-api/hubs-api-guide-javascript-client#establishconnection https://github.com/SignalR/SignalR/wiki
questo non funziona con .done più chiamate – daniel
multiple? Puoi spiegare? – LiamB
Ho più blocchi javascript da diverse pagine html parziali generate da server.Non conosco l'ordine di esecuzione del blocco di script. Quindi non so da dove iniziare il mio hub. – daniel