Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 19123|Odgovoriti: 1

[ASP.NET] mvc 4.0 Kako uporabljati SignalR (2)

[Kopiraj povezavo]
Objavljeno na 5. 07. 2017 11:15:08 | | | |
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č.









Prejšnji:asp.net mvc4.0 Namestitev SignalR (1)
Naslednji:Koda napake: 1175. Uporabljate način varne posodobitve in ste poskušali posodobiti ta...
 Najemodajalec| Objavljeno na 5. 07. 2017 14:53:15 |
. .NET se pojavi z uporabo SignalRNapaka med roko v WebSocketu
Med razvojnim procesom sem naletel na naslednjo napako: WebSocket povezava z 'ws://*****' ni uspela: Napaka med WebSocket roko: net::ERR_CONNECTION_RESET.

Razlog, da websocket ni mogoče uporabiti, je ta, da datoteka web.config ni konfigurirana. Za pravilno delovanje SignalR je potrebno dodati naslednji konfiguracijski element pod vozlišče system.web:



targetFramework nastavljen na 4.5
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com