Per prima cosa, ho creato una nuova cartella Hubs sotto il progetto
Inoltre, crea un nuovo file PositionVehicle sotto la cartella, come mostrato nella figura seguente:
Ricostruiamo il progetto, poi facciamo riferimento ai seguenti due file js nella pagina di visualizzazione
Nota!!!
Il file "/Scripts/jquery.signalR-2.2.2.min.js" viene aggiunto all'installazione di SignalR ed esiste sul disco fisico
"/signalr/hubs" èSignalR viene generato automaticamente, che non si trova sul disco fisico!
Diamo un'occhiata al file js generato da SignalR, come segue:
/*! * ASP.NET Libreria JavaScript SignalR v2.2.2 * http://signalr.net/
* * Copyright (c) .NET Foundation. Tutti i diritti riservati. * Concesso in licenza con la Licenza Apache, Versione 2.0. Consulta License.txt nella sezione principale del progetto per le informazioni sulla licenza.
* */
<reference path="..\..\SignalR.Client.JS\Scripts\jquery-1.6.4.js" /> <percorso di riferimento="jquery.signalR.js" /> (funzione ($, finestra, indefinita) { <param name="$" type="jQuery" /> "usa severo";
if (typeof ($.signalR) !== "funzione") { throw new Error("SignalR: SignalR non è caricato. Si prega di assicurarsi che jquery.signalR-x.js sia citato prima di ~/signalr/js."); }
var signalR = $.signalR;
function makeProxyCallback(hub, callback) { funzione di ritorno () { Chiama il metodo client hub callback.apply(hub, $.makeArray(argomenti)); }; }
function registerHubProxies(instance, shouldSubscribe) { var key, hub, memberKey, memberValue, subscriptionMethod;
per (chiave in istanza) { if (instance.hasOwnProperty(key)) { hub = istanza[key];
se (!( hub.hubName)) { Non un hub client continuare; }
if (dovrebbeIscriversi) { Vogliamo iscriversi agli eventi hub subscriptionMethod = hub.on; } altrimenti { Vogliamo disiscriverci dagli eventi hub subscriptionMethod = hub.off; }
Passa in loop tra tutti i membri dell'hub e trova le funzioni del client hub per iscriversi/disiscriversi for (memberKey in hub.client) { if (hub.client.hasOwnProperty(memberKey)) { memberValue = hub.client[memberKey];
if (!$.isFunction(memberValue)) { Non una funzione client hub continuare; }
subscriptionMethod.call(hub, memberKey, makeProxyCallback(hub, memberValue)); } } } } }
$.hubConnection.prototype.createHubProxies = funzione () { var proxies = {}; this.starting(function () { Registra i proxy hub come abbonato (istanza, dovrebbeIscriversi) registerHubProxies (proxy, vero);
this._registerSubscribedHubs(); }).disconnesso(funzione () { Disiscrivi tutti i proxy hub quando "disconnettiamo". Questo serve a garantire che non si aggiungano richiamate funzionali. (istanza, dovrebbeIscriversi) registerHubProxies (proxy, falso); });
proxy['positionVehicle'] = this.createHubProoxy(''positionVehicle'); proxy['positionVehicle'].client = { }; proxies['positionVehicle'].server = { ciao: funzione (nome) { return proxyes['positionVehicle'].invoke.apply(proxyes['PositionVehicle'], $.merge(["Hello"], $.makeArray(arguments))); } };
restituire proxy; };
signalR.hub = $.hubConnection("/signalr", { useDefaultPath: false }); $.extend(signalR, signalR.hub.createHubProxies());
}(window.jQuery, window));
Poi, testiamo e il codice è il seguente:
I risultati dei test sono i seguenti:
I primi due messaggi che abbiamo ricevuto sono stati entrambi inviati da noi stessi, e anche noi li abbiamo ricevuti, e il terzo messaggio è stato inviato da me che ho aperto un altro browser, e anche noi l'abbiamo ricevuto.
Quando ho ricevuto il messaggio, non era un websocket, ma in realtà un sondaggio HTTP, perché il nostro js segnalava un errore
Per quanto riguarda il motivo per cui l'errore js è stato segnalato, ne parleremo la prossima volta.
|