Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 19123|Atsakyti: 1

[ASP.NET] mvc 4.0 Kaip naudotis SignalR (2)

[Kopijuoti nuorodą]
Paskelbta 2017-07-05 11:15:08 | | | |
Pirma, aš sukūriau naują Hubs aplanką pagal projektą

Be to, aplanke sukurkite naują "PositionVehicle" failą, kaip parodyta šiame paveikslėlyje:



Iš naujo sukurkite projektą, tada peržiūros puslapyje nurodome šiuos du js failus



Nata!!!

Failas "/Scripts/jquery.signalR-2.2.2.min.js" pridedamas prie "SignalR" diegimo ir yra fiziniame diske

"/signalr/hubs" yraSignalR generuojamas automatiškai, kurio negalima rasti fiziniame diske!

Pažvelkime į "SignalR" sugeneruotą js failą taip:

/*!
* ASP.NET SignalR JavaScript biblioteka v2.2.2
* http://signalr.net/
*
* Autorių teisės (c) .NET Foundation. Visos teisės saugomos.
* Licencijuota pagal "Apache" licenciją, 2.0 versiją. Licencijos informacijos ieškokite License.txt projekto šaknyje.
*
*/

<reference path="..\..\SignalR.Client.JS\Scripts\jquery-1.6.4.js" />
<nuorodos kelias="jquery.signalR.js" />
(funkcija ($, langas, neapibrėžta) {
    <param name="$" type="jQuery" />
    "naudoti griežtai";

    if (typeof ($.signalR) !== "funkcija") {
        mesti naują klaidą("SignalR: SignalR neįkeltas. Įsitikinkite jquery.signalR-x.js yra nurodyta prieš ~/signalr/js.");
    }

    var signalR = $.signalR;

    funkcija makeProxyCallback(šakotuvas, atgalinis skambutis) {
        grąžinimo funkcija () {
            Skambinkite klientų telkinio metodui
            callback.apply(centras, $.makeArray(argumentai));
        };
    }

    funkcija registerHubProxies(instance, shouldSubscribe) {
        var raktas, hub, memberKey, memberValue, subscriptionMethod;

        for (pavyzdžio raktas) {
            if (instance.hasOwnProperty(raktas)) {
                hub = instance[raktas];

                jei (!( hub.hubName)) {
                    Ne klientų telkinys
                    tęsti;
                }

                if (shouldSubscribe) {
                    Norime užsiprenumeruoti centro renginius
                    subscriptionMethod = hub.on;
                } else {
                    Norime atsisakyti centro renginių prenumeratos
                    subscriptionMethod = hub.off;
                }

                Peržiūrėkite visus telkinio narius ir raskite klientų telkinio funkcijas, kad galėtumėte užsiprenumeruoti / atsisakyti prenumeratos
                for (memberKey hub.client) {
                    if (hub.client.hasOwnProperty(memberKey)) {
                        memberValue = hub.client[memberKey];

                        if (!$.isFunction(memberValue)) {
                            Ne kliento telkinio funkcija
                            tęsti;
                        }

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

    $.hubConnection.prototype.createHubProxies = funkcija () {
        var proxy = {};
        this.starting(funkcija () {
            Koncentratoriaus tarpinių serverių registravimas kaip prenumeruojamas
            (pavyzdys, turėtųPrenumeruoti)
            registerHubProxies(tarpiniai serveriai, tiesa);

            this._registerSubscribedHubs();
        }).disconnected(funkcija () {
            Atsisakykite visų šakotuvo tarpinių serverių prenumeratos, kai "atsijungiame".  Taip siekiama užtikrinti, kad iš naujo nepridėtume funkcinių atgalinių skambučių.
            (pavyzdys, turėtųPrenumeruoti)
            registerHubProxies(tarpiniai serveriai, klaidingi);
        });

        proxies['positionVehicle'] = this.createHubProxy('positionVehicle');
        proxies['positionVehicle'].client = { };
        proxies['positionVehicle'].server = {
            Sveiki: funkcija (pavadinimas) {
                return proxies['positionVehicle'].invoke.apply(proxies['positionVehicle'], $.merge(["Hello"], $.makeArray(argumentai)));
             }
        };

        grąžinti įgaliotinius;
    };

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

}(window.jQuery, langas));


Tada išbandykime ir kodas yra toks:



Bandymo rezultatai yra tokie:


Pirmuosius du pranešimus, kuriuos gavome, išsiuntėme patys, juos taip pat gavome, o trečią pranešimą atsiuntiau aš, atidaręs kitą naršyklę, ir mes taip pat jį gavome.

Kai gavau pranešimą, tai buvo ne websocket, bet iš tikrųjų HTTP apklausa, nes mūsų js pranešė apie klaidą

Kalbant apie tai, kodėl buvo pranešta apie js klaidą, apie tai kalbėsime kitą kartą.









Ankstesnis:asp.net mvc4.0 SignalR diegimas (1)
Kitą:Klaidos kodas: 1175. Naudojate saugaus naujinimo režimą ir bandėte atnaujinti...
 Savininkas| Paskelbta 2017-07-05 14:53:15 |
. .NET pasirodo naudojant "SignalR"Klaida WebSocket rankos paspaudimo metu
Kūrimo proceso metu susidūriau su šia klaida: "WebSocket" ryšys su "ws://*****" nepavyko: Klaida "WebSocket" rankos paspaudimo metu: net::ERR_CONNECTION_RESET.

Priežastis, kodėl websocket negalima naudoti, yra ta, kad failas web.config nėra sukonfigūruotas. Kad "SignalR" veiktų tinkamai, reikia pridėti šį konfigūracijos elementą prie mazgo system.web:



4,5 tikslo
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com