Først oprettede jeg en ny Hubs-mappe under projektet
Opret også en ny PositionVehicle-fil under mappen, som vist i følgende figur:
Genopbyg projektet, og så refererer vi til følgende to js-filer på visningssiden
Seddel!!!
Filen "/Scripts/jquery.signalR-2.2.2.min.js" tilføjes til installationen af SignalR og findes på den fysiske disk
"/signaler/hubs" erSignalR genereres automatisk, som ikke kan findes på den fysiske disk!
Lad os se på js-filen, genereret af SignalR, som følger:
/*! * ASP.NET SignalR JavaScript Library v2.2.2 * http://signalr.net/
* * Ophavsret (c) .NET Foundation. Alle rettigheder forbeholdes. * Licenseret under Apache-licensen, version 2.0. Se License.txt i projektroden for licensinformation.
* */
<referencesti="..\..\SignalR.Client.JS\\Scripts\jquery-1.6.4.js" /> <referencesti="jquery.signalR.js" /> (funktion ($, vindue, udefineret) { <param name="$" type="jQuery" /> "brug streng";
hvis (typeof ($.signalR) !== "funktion") { throw ny fejl ("SignalR: SignalR er ikke indlæst. Sørg venligst for, at jquery.signalR-x.js refereres før ~/signalr/js."); }
var signalR = $.signalR;
function makeProxyCallback(hub, callback) { returnfunktion () { Kald klienthub-metoden callback.apply(hub, $.makeArray(arguments)); }; }
function registerHubProxies(instance, shouldSubscribe) { var key, hub, memberKey, memberValue, subscriptionMethod;
for (nøgle i instans) { hvis (instance.hasOwnProperty(key)) { hub = instans[nøgle];
hvis (!( hub.hubName)) { Ikke et klienthub fortsæt; }
hvis (shouldSubscribe) { Vi vil gerne abonnere på hub-arrangementerne subscriptionMethod = hub.on; } ellers { Vi vil gerne afmelde os fra hub-arrangementerne subscriptionMethod = hub.off; }
Gå igennem alle medlemmer på hubben og find klienthub-funktioner for at abonnere eller afmelde dig for (memberKey in hub.client) { hvis (hub.client.hasOwnProperty(memberKey)) { memberValue = hub.client[memberKey];
hvis (!$.isFunction(memberValue)) { Ikke en klienthub-funktion fortsæt; }
subscriptionMethod.call(hub, memberKey, makeProxyCallback(hub, memberValue)); } } } } }
$.hubConnection.prototype.createHubProxies = function () { var proxies = {}; this.starting(funktion () { Registrer hub-proxies som abonnerede (instance, shouldSubscribe) registerHubProxies (proxies, true);
this._registerSubscribedHubs(); }).disconnected(function () { Afmeld alle hub-proxies, når vi "afbryder". Dette er for at sikre, at vi ikke genindsætter funktionelle callbacks. (instance, shouldSubscribe) registerHubProxies (proxies, falsk); });
proxies['positionVehicle'] = this.createHubProxy('positionVehicle'); proxies['positionVehicle'].client = { }; proxies['positionVehicle'].server = { hello: funktion (navn) { return proxies['positionVehicle'].invoke.apply(proxies['positionVehicle'], $.merge(["Hello"], $.makeArray(arguments))); } };
returnere stedfortrædere; };
signalR.hub = $.hubConnection("/signalr", { useDefaultPath: false }); $.extend(signalR, signalR.hub.createHubProxies());
}(window.jQuery, window));
Derefter tester vi det, og koden er som følger:
Testresultaterne er som følger:
De første to beskeder, vi modtog, blev begge sendt af os selv, og vi modtog dem også, og den tredje besked blev sendt af mig, som åbnede en anden browser, og vi modtog den også.
Da jeg modtog beskeden, var det ikke en websocket, men faktisk en HTTP-afstemning, fordi vores js rapporterede en fejl
Hvad angår hvorfor js-fejlen blev rapporteret, vil vi tale om det næste gang.
|