Najprej sem ustvaril novo mapo Hubs pod projektom
Prav tako ustvarite novo datoteko PositionVehicle pod mapo, kot je prikazano na naslednji sliki:
Projekt ponovno zgradimo, nato pa na strani za ogled sklicujemo naslednji dve js datoteki
Opomba!!!
Datoteka "/Scripts/jquery.signalR-2.2.2.min.js" se doda v namestitev SignalR in obstaja na fizičnem disku
"/signalr/hubs" jeSignalR se samodejno generira, ki ga ni mogoče najti na fizičnem disku!
Poglejmo si js datoteko, ki jo generira SignalR, kot sledi:
/*! * ASP.NET SignalR JavaScript knjižnica v2.2.2 * http://signalr.net/
* * Avtorske pravice (c) .NET Foundation. Vse pravice pridržane. * Licencirano pod licenco Apache, različica 2.0. Oglejte si License.txt v korenu projekta za informacije o licenci.
* */
<referenčna pot="..\..\SignalR.Client.JS\Scripts\jquery-1.6.4.js" /> <referenčna pot="jquery.signalR.js" /> (funkcija ($, okno, nedefinirano) { <param name="$" type="jQuery" /> "uporabi strogo";
if (typeof ($.signalR) !== "funkcija") { vrzi novo napako ("SignalR: SignalR ni naložen. Prosimo, poskrbite, da je jquery.signalR-x.js referenciran pred ~/signalr/js."); }
var signalR = $.signalR;
function makeProxyCallback(hub, callback) { Povratna funkcija () { Pokličite metodo odjemalskega vozlišča callback.apply(hub, $.makeArray(arguments)); }; }
function registerHubProxies(instance, shouldSubscribe) { var key, hub, memberKey, memberValue, subscriptionMethod;
za (ključ v primeru) { if (instance.hasOwnProperty(key)) { hub = instance[key];
če (!( hub.hubName)) { Ni odjemalsko središče nadaljuj; }
if (shouldSubscribe) { Želimo se naročiti na dogodke v središču subscriptionMethod = hub.on; } else { Želimo se odjaviti od dogodkov v središču subscriptionMethod = hub.off; }
Prekliči vse člane na hubu in poišči funkcije odjemalskega huba za naročnino/odjavo for (memberKey in hub.client) { if (hub.client.hasOwnProperty(memberKey)) { memberValue = hub.client[memberKey];
if (!$.isFunction(memberValue)) { Ni funkcija odjemalskega vozlišča nadaljuj; }
subscriptionMethod.call(hub, memberKey, makeProxyCallback(hub, memberValue)); } } } } }
$.hubConnection.prototype.createHubProxies = function () { var proxyji = {}; this.starting(function () { Registrirajte hub proxyje kot naročene (primer, ShouldSubscribe) registerHubProxies(proxyji, true);
this._registerSubscribedHubs(); }).disconnected(function () { Odjavite vse centralne proxyje, ko se "odklopimo". To je zato, da zagotovimo, da ne dodajamo funkcionalnih povratnih klicev. (primer, ShouldSubscribe) registerHubProxies(proxyji, false); });
proxyji['positionVehicle'] = this.createHubProxy('positionVehicle'); proxyji['positionVehicle'].client = { }; proxies['positionVehicle'].server = { Hello: function (ime) { return proxyji['positionVehicle'].invoke.apply(proxies['positionVehicle'], $.merge(["Hello"], $.makeArray(arguments))); } };
povratne proxyje; };
signalR.hub = $.hubConnection("/signalr", { useDefaultPath: false }); $.extend(signalR, signalR.hub.createHubProxies());
}(window.jQuery, window));
Nato ga preizkusimo in koda je naslednja:
Rezultati testa so naslednji:
Prvi dve sporočili, ki sva jih prejela, sva obe poslali sami, prav tako sva ju prejela, tretje sporočilo pa sem poslal jaz, ko sem odprl drug brskalnik, in prav tako sva ga prejela.
Ko sem prejel sporočilo, ni šlo za websocket, ampak za HTTP anketo, ker je naš js poročal o napaki
Zakaj je bila napaka js prijavljena, bomo o tem govorili naslednjič.
|