Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 19123|Antwort: 1

[ASP.NET] mvc 4.0 Wie man SignalR (2) verwendet

[Link kopieren]
Veröffentlicht am 05.07.2017 11:15:08 | | | |
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.









Vorhergehend:asp.net mvc4.0 Installation von SignalR (1)
Nächster:Fehlercode: 1175. Du benutzt den sicheren Update-Modus und hast versucht, einen TA...
 Vermieter| Veröffentlicht am 05.07.2017 14:53:15 |
. .NET erscheint mit SignalRFehler während des WebSocket-Handshakes
Während des Entwicklungsprozesses trat ich auf folgenden Fehler: WebSocket-Verbindung zu 'ws://*****' fehlgeschlagen: Fehler während des WebSocket-Handshakes: net::ERR_CONNECTION_RESET.

Der Grund, warum der Websocket nicht verwendet werden kann, ist, dass die Web.config-Datei nicht konfiguriert ist. Um SignalR korrekt auszuführen, muss das folgende Konfigurationselement unter dem system.web-Knoten hinzugefügt werden:



targetFramework auf 4.5 gesetzt
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com