Eerst heb ik een nieuwe Hubs-map onder het project aangemaakt
Maak ook een nieuw PositionVehicle-bestand aan onder de map, zoals weergegeven in de volgende figuur:
Bouw het project opnieuw op, en vervolgens verwijzen we naar de volgende twee js-bestanden op de weergavepagina
Notitie!!!
Het bestand "/Scripts/jquery.signalR-2.2.2.min.js" wordt toegevoegd aan de installatie van SignalR en bevindt zich op de fysieke schijf
"/signaler/hubs" isSignalR wordt automatisch gegenereerd, die niet op de fysieke schijf te vinden is!
Laten we eens kijken naar het js-bestand dat door SignalR is gegenereerd, als volgt:
/*! * ASP.NET SignalR JavaScript Library v2.2.2 * http://signalr.net/
* * Auteursrecht (c) .NET Foundation. Alle rechten voorbehouden. * Gelicentieerd onder de Apache License, versie 2.0. Zie License.txt in de projectroot voor licentie-informatie.
* */
<referentiepad="..\..\SignalR.Client.JS\Scripts\jquery-1.6.4.js" /> <referentiepad="jquery.signalR.js" /> (functie ($, window, ongedefinieerd) { <param name="$" type="jQuery" /> "gebruik streng";
als (typeof ($.signalR) !== "functie") { gooi nieuwe foutmelding ("SignalR: SignalR is niet geladen. Zorg ervoor dat jquery.signalR-x.js wordt genoemd vóór ~/signalr/js."); }
var signalR = $.signalR;
function makeProxyCallback(hub, callback) { Retourfunctie () { Roep de client hub-methode aan callback.apply(hub, $.makeArray(arguments)); }; }
function registerHubProxies(instance, shouldSubscribe) { var key, hub, memberKey, memberValue, subscriptionMethod;
voor (sleutel in voorbeeld) { als (instance.hasOwnProperty(key)) { hub = instance[key];
als (!( hub.hubName)) { Geen clienthub Ga door; }
if (shouldSubscribe) { We willen ons abonneren op de hub-evenementen subscriptionMethod = hub.on; } anders { We willen ons afmelden van de hub-evenementen subscriptionMethod = hub.off; }
Loop door alle leden op de hub en vind clienthubfuncties om je aan te melden of te verlaten for (memberKey in hub.client) { if (hub.client.hasOwnProperty(memberKey)) { memberValue = hub.client[memberKey];
if (!$.isFunction(memberValue)) { Geen clienthubfunctie Ga door; }
subscriptionMethod.call(hub, memberKey, makeProxyCallback(hub, memberValue)); } } } } }
$.hubConnection.prototype.createHubProxies = function () { var proxies = {}; this.starting(functie () { Registreer de hub-proxies als geabonneerd (instance, shouldSubscribe) registerHubProxies (proxies, waar);
this._registerSubscribedHubs(); }).disconnected(functie () { Meld alle hubproxies uit wanneer we "verbreken". Dit is om te voorkomen dat we functionele callbacks opnieuw toevoegen. (instance, shouldSubscribe) registerHubProxies (proxies, false); });
proxies['positionVehicle'] = this.createHubProxy('positionVehicle'); proxies['positionVehicle'].client = { }; proxies['positionVehicle'].server = { Hallo: functie (naam) { return proxies['positionVehicle'].invoke.apply(proxies['positionVehicle'], $.merge(["Hallo"], $.makeArray(arguments))); } };
geef proxy's terug; };
signalR.hub = $.hubConnection("/signalr", { useDefaultPath: false }); $.extend(signalR, signalR.hub.createHubProxies());
}(window.jQuery, window));
Laten we het dan testen en de code is als volgt:
De testresultaten zijn als volgt:
De eerste twee berichten die we ontvingen, waren allebei door onszelf verstuurd, en wij ontvingen ze ook, en het derde bericht werd door mij gestuurd die een andere browser opende, en wij ontvingen het ook.
Toen ik het bericht ontving, was het geen websocket, maar eigenlijk een HTTP-poll, omdat onze js een foutmelding had gemeld
Wat betreft waarom de fout in de js werd gemeld, daar zullen we het de volgende keer over hebben.
|