Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 19123|Răspunde: 1

[ASP.NET] mvc 4.0 Cum să folosești SignalR (2)

[Copiază linkul]
Postat pe 05.07.2017 11:15:08 | | | |
Mai întâi, am creat un folder nou Hubs sub proiect

De asemenea, creează un nou fișier PositionVehicle sub folder, așa cum se arată în figura următoare:



Reconstruim proiectul, apoi facem referire la următoarele două fișiere js pe pagina de vizualizare



Notă!!!

Fișierul "/Scripts/jquery.signalR-2.2.2.min.js" este adăugat la instalarea SignalR și există pe discul fizic

"/signalr/hubs" esteSignalR este generat automat, care nu poate fi găsit pe discul fizic!

Să aruncăm o privire asupra fișierului js generat de SignalR, după cum urmează:

/*!
* ASP.NET Biblioteca JavaScript SignalR v2.2.2
* http://signalr.net/
*
* Drepturi de autor (c) Fundația .NET. Toate drepturile rezervate.
* Licențiat sub Apache License, Versiunea 2.0. Vezi License.txt în rădăcina proiectului pentru informații despre licențe.
*
*/

<calea de referință="..\..\SignalR.Client.JS\Scripts\jquery-1.6.4.js" />
<calea de referință="jquery.signalR.js" />
(funcție ($, fereastră, nedefinită) {
    <param name="$" type="jQuery" />
    "folosește strict";

    if (typeof ($.signalR) !== "function") {
        throw new Error ("SignalR: SignalR nu este încărcat. Vă rugăm să vă asigurați că jquery.signalR-x.js este menționat înainte de ~/signalr/js.");
    }

    var signalR = $.signalR;

    function makeProxyCallback(hub, callback) {
        funcția return () {
            Metoda de apelare a hub-ului client
            callback.apply(hub, $.makeArray(argumente));
        };
    }

    function registerHubProxies(instance, shouldSubscribe) {
        var key, hub, memberKey, memberValue, subscriptionMethod;

        pentru (cheie în instanță) {
            if (instance.hasOwnProperty(key)) {
                hub = instanță[cheie];

                dacă (!( hub.hubName)) {
                    Nu un hub client
                    continuă;
                }

                if (shouldSubscribe) {
                    Vrem să ne abonăm la evenimentele hub
                    subscriptionMethod = hub.on;
                } altfel {
                    Vrem să ne dezabonăm de la evenimentele hub
                    subscriptionMethod = hub.off;
                }

                Parcurge toți membrii de pe hub și găsește funcții client hub pentru a te abona/dezabona
                for (memberKey în hub.client) {
                    if (hub.client.hasOwnProperty(memberKey)) {
                        memberValue = hub.client[memberKey];

                        if (!$.isFunction(memberValue)) {
                            Nu o funcție de hub client
                            continuă;
                        }

                        subscriptionMethod.call(hub, memberKey, makeProxyCallback(hub, memberValue));
                    }
                }
            }
        }
    }

    $.hubConnection.prototype.createHubProxies = function () {
        var proxyes = {};
        this.starting(function () {
            Înregistrează proxy-urile hub-ului ca fiind abonați
            (instanță, ar trebui să se aboneze)
            registerHubProxies (proxy-uri, adevărat);

            this._registerSubscribedHubs();
        }).deconectat(funcție () {
            Dezabonează toate proxy-urile hub-ului când "deconectăm".  Acest lucru este pentru a ne asigura că nu adăugăm din nou apeluri funcționale.
            (instanță, ar trebui să se aboneze)
            registerHubProxies(proxy-uri, false);
        });

        proxy['VehiclePosition'] = this.createHubProoxy('VehiclePosition');
        proxy['positionVehicle'].client = { };
        proxies['positionVehicle'].server = {
            Bună: funcție (nume) {
                return proxys['PositionVehicle'].invoke.apply(proxyes['PositionVehicle'], $.merge(["Hello"], $.makeArray(arguments)));
             }
        };

        returnarea proxy-urilor;
    };

    signalR.hub = $.hubConnection("/signalr", { useDefaultPath: false });
    $.extend(signalR, signalR.hub.createHubProxies());

}(window.jQuery, fereastră));


Apoi, să testăm și codul este următorul:



Rezultatele testelor sunt următoarele:


Primele două mesaje pe care le-am primit au fost trimise de noi, și le-am primit și noi, iar al treilea mesaj a fost trimis de mine, care am deschis un alt browser, și l-am primit și el.

Când am primit mesajul, nu era un websocket, ci de fapt un sondaj HTTP, pentru că js-ul nostru a raportat o eroare

Cât despre motivul pentru care a fost raportată eroarea js, vom discuta data viitoare.









Precedent:asp.net mvc4.0 Instalarea SignalR (1)
Următor:Cod eroare: 1175. Folosești modul safe update și ai încercat să actualizezi un ta...
 Proprietarul| Postat pe 05.07.2017 14:53:15 |
. .NET apare folosind SignalREroare în timpul handshake-ului WebSocket
În timpul procesului de dezvoltare, am întâmpinat următoarea eroare: Conexiunea WebSocket la 'ws://*****' a eșuat: Eroare în timpul handshake-ului WebSocket: net::ERR_CONNECTION_RESET.

Motivul pentru care websocket-ul nu poate fi folosit este că fișierul web.config nu este configurat. Pentru a rula corect SignalR necesită adăugarea următorului element de configurare sub nodul system.web:



targetFramework setat la 4.5
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com