Først opprettet jeg en ny Hubs-mappe under prosjektet
Lag også en ny PositionVehicle-fil under mappen, som vist i følgende figur:
Bygg opp prosjektet på nytt, og deretter refererer vi til de to følgende js-filene på visningssiden
Notat!!!
Filen "/Scripts/jquery.signalR-2.2.2.min.js" legges til installasjonen av SignalR og eksisterer på den fysiske disken
"/signaler/hubs" erSignalR genereres automatisk, som ikke kan finnes på den fysiske disken!
La oss se på js-filen generert av SignalR, som følger:
/*! * ASP.NET SignalR JavaScript Library v2.2.2 * http://signalr.net/
* * Opphavsrett (c) .NET Foundation. Alle rettigheter forbeholdt. * Lisensiert under Apache-lisensen, versjon 2.0. Se License.txt i prosjektroten for lisensinformasjon.
* */
<referansesti="..\.\\SignalR.Client.JS\Scripts\jquery-1.6.4.js" /> <referansesti="jquery.signalR.js" /> (funksjon ($, vindu, udefinert) { <param name="$" type="jQuery" /> "bruk strengt";
hvis (typeof ($.signalR) !== "funksjon") { kast ny Error("SignalR: SignalR er ikke lastet. Vennligst sørg for at jquery.signalR-x.js refereres før ~/signalr/js."); }
var signalR = $.signalR;
function makeProxyCallback(hub, callback) { returfunksjon () { Kall klienthub-metoden callback.apply(hub, $.makeArray(arguments)); }; }
function registerHubProxies(instance, shouldSubscribe) { var key, hub, memberKey, memberValue, subscriptionMethod;
for (nøkkel i instans) { hvis (instance.hasOwnProperty(key)) { hub = instans[nøkkel];
hvis (!( hub.hubName)) { Ikke en klienthub fortsett; }
hvis (shouldSubscribe) { Vi ønsker å abonnere på hub-arrangementene subscriptionMethod = hub.on; } ellers { Vi ønsker å melde oss ut av hub-arrangementene subscriptionMethod = hub.off; }
Gå gjennom alle medlemmene på huben og finn funksjoner i klienthuben for å abonnere/avmelde deg for (memberKey in hub.client) { hvis (hub.client.hasOwnProperty(memberKey)) { memberValue = hub.client[memberKey];
hvis (!$.isFunction(memberValue)) { Ikke en klienthub-funksjon fortsett; }
subscriptionMethod.call(hub, memberKey, makeProxyCallback(hub, memberValue)); } } } } }
$.hubConnection.prototype.createHubProxies = function () { var proxies = {}; this.starting(function () { Registrer hub-proxyene som abonnert (instans, shouldSubscribe) registerHubProxies (proxyer, true);
this._registerSubscribedHubs(); }).disconnected(function () { Avmeld alle hub-proxyer når vi "kobler fra". Dette er for å sikre at vi ikke legger til funksjonelle callbacks på nytt. (instans, shouldSubscribe) registerHubProxies (proxyer, falsk); });
proxies['positionVehicle'] = this.createHubProxy('positionVehicle'); proxies['positionVehicle'].client = { }; proxies['positionVehicle'].server = { Hallo: funksjon (navn) { return proxies['positionVehicle'].invoke.apply(proxies['positionVehicle'], $.merge(["Hello"], $.makeArray(arguments))); } };
retur-proxyer; };
signalR.hub = $.hubConnection("/signalr", { useDefaultPath: false }); $.extend(signalR, signalR.hub.createHubProxies());
}(window.jQuery, window));
La oss teste det ut, og koden er som følger:
Testresultatene er som følger:
De to første meldingene vi mottok ble begge sendt av oss selv, og vi mottok dem også, og den tredje meldingen ble sendt av meg som åpnet en annen nettleser, og vi mottok den også.
Da jeg mottok meldingen, var det ikke en websocket, men faktisk en HTTP-poll, fordi vår js rapporterte en feil
Når det gjelder hvorfor js-feilen ble rapportert, skal vi snakke om neste gang.
|