Zuerst habe ich einen neuen Hubs-Ordner unter dem Projekt erstellt
Erstelle außerdem eine neue PositionVehicle-Datei unter dem Ordner, wie in der folgenden Abbildung gezeigt:
Bauen Sie das Projekt neu auf, und dann beziehen wir uns auf die folgenden zwei js-Dateien auf der Ansichtsseite
Anmerkung!!!
Die Datei "/Scripts/jquery.signalR-2.2.2.min.js" wird der Installation von SignalR hinzugefügt und befindet sich auf der physischen Festplatte
"/Signaler/Hubs" istSignalR wird automatisch generiert, die auf der physischen Festplatte nicht gefunden werden kann!
Schauen wir uns die von SignalR generierte JS-Datei wie folgt an:
/*! * ASP.NET SignalR JavaScript Library v2.2.2 * http://signalr.net/
* * Copyright (c) .NET Foundation. Alle Rechte vorbehalten. * Lizenziert unter der Apache-Lizenz, Version 2.0. Siehe License.txt im Projektroot für Lizenzinformationen.
* */
<Referenzpfad="..\..\SignalR.Client.JS\Scripts\jquery-1.6.4.js" /> <Referenzpfad="jquery.signalR.js" /> (Funktion ($, Fenster, undefiniert) { <param name="$" type="jQuery" /> "Verwenden Sie strikt";
wenn (typeof ($.signalR) !== "funktion") { werfen neuen Fehler ("SignalR: SignalR ist nicht geladen. Bitte stellen Sie sicher, dass jquery.signalR-x.js vor ~/signalr/js.") referenziert wird); }
var signalR = $.signalR;
function makeProxyCallback(hub, callback) { Rückgabefunktion () { Ruf die Client-Hub-Methode auf callback.apply(Hub, $.makeArray(arguments)); }; }
function registerHubProxies(instance, shouldSubscribe) { var key, hub, memberKey, memberValue, subscriptionMethod;
für (Schlüssel im Instanz) { wenn (instance.hasOwnProperty(key)) { hub = instanz[schlüssel];
wenn (!( hub.hubName)) { Kein Client-Hub Fahren Sie fort; }
if (shouldSubscribe) { Wir möchten die Hub-Events abonnieren subscriptionMethod = hub.on; } sonst { Wir möchten uns von den Hub-Events abmelden subscriptionMethod = hub.off; }
Führe alle Mitglieder im Hub durch und finde Funktionen des Client-Hubs, um dich zu abonnieren oder abzumelden for (memberKey in hub.client) { if (hub.client.hasOwnProperty(memberKey)) { memberValue = hub.client[memberKey];
if (!$.isFunction(memberValue)) { Keine Client-Hub-Funktion Fahren Sie fort; }
subscriptionMethod.call(hub, memberKey, makeProxyCallback(hub, memberValue)); } } } } }
$.hubConnection.prototype.createHubProxies = function () { var proxies = {}; this.starting(function () { Registrieren Sie die Hub-Proxys als abonniert (Instanz, shouldSubscribe) registerHubProxies (Proxies, true);
this._registerSubscribedHubs(); }).disconnected(function () { Abmelden Sie alle Hub-Proxys, wenn wir die Verbindung "trennen". Dies soll sicherstellen, dass wir keine funktionalen Rückrufe wieder hinzufügen. (Instanz, shouldSubscribe) registerHubProxies (Proxies, falsch); });
proxies['positionVehicle'] = this.createHubProxy('positionVehicle'); proxies['positionVehicle'].client = { }; proxies['positionVehicle'].server = { Hallo: Funktion (Name) { return proxies['positionVehicle'].invoke.apply(proxies['positionVehicle'], $.merge(["Hello"], $.makeArray(arguments))); } };
Stellvertreter zurück; };
signalR.hub = $.hubConnection("/signalr", { useDefaultPath: false }); $.extend(signalR, signalR.hub.createHubProxies());
}(window.jQuery, window));
Dann testen wir es aus, und der Code sieht wie folgt aus:
Die Testergebnisse sind wie folgt:
Die ersten beiden Nachrichten, die wir erhielten, wurden beide von uns selbst gesendet, und wir haben sie ebenfalls erhalten, und die dritte Nachricht wurde von mir gesendet, die einen anderen Browser geöffnet habe, und wir haben sie ebenfalls erhalten.
Als ich die Nachricht erhielt, war es kein Websocket, sondern tatsächlich eine HTTP-Abfrage, weil unser JS einen Fehler gemeldet hatte
Warum der JS-Fehler gemeldet wurde, werden wir beim nächsten Mal besprechen.
|