Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 19123|Svar: 1

[ASP.NET] mvc 4.0 Sådan bruger du SignalR (2)

[Kopier link]
Opslået på 05/07/2017 11.15.08 | | | |
Først oprettede jeg en ny Hubs-mappe under projektet

Opret også en ny PositionVehicle-fil under mappen, som vist i følgende figur:



Genopbyg projektet, og så refererer vi til følgende to js-filer på visningssiden



Seddel!!!

Filen "/Scripts/jquery.signalR-2.2.2.min.js" tilføjes til installationen af SignalR og findes på den fysiske disk

"/signaler/hubs" erSignalR genereres automatisk, som ikke kan findes på den fysiske disk!

Lad os se på js-filen, genereret af SignalR, som følger:

/*!
* ASP.NET SignalR JavaScript Library v2.2.2
* http://signalr.net/
*
* Ophavsret (c) .NET Foundation. Alle rettigheder forbeholdes.
* Licenseret under Apache-licensen, version 2.0. Se License.txt i projektroden for licensinformation.
*
*/

<referencesti="..\..\SignalR.Client.JS\\Scripts\jquery-1.6.4.js" />
<referencesti="jquery.signalR.js" />
(funktion ($, vindue, udefineret) {
    <param name="$" type="jQuery" />
    "brug streng";

    hvis (typeof ($.signalR) !== "funktion") {
        throw ny fejl ("SignalR: SignalR er ikke indlæst. Sørg venligst for, at jquery.signalR-x.js refereres før ~/signalr/js.");
    }

    var signalR = $.signalR;

    function makeProxyCallback(hub, callback) {
        returnfunktion () {
            Kald klienthub-metoden
            callback.apply(hub, $.makeArray(arguments));
        };
    }

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

        for (nøgle i instans) {
            hvis (instance.hasOwnProperty(key)) {
                hub = instans[nøgle];

                hvis (!( hub.hubName)) {
                    Ikke et klienthub
                    fortsæt;
                }

                hvis (shouldSubscribe) {
                    Vi vil gerne abonnere på hub-arrangementerne
                    subscriptionMethod = hub.on;
                } ellers {
                    Vi vil gerne afmelde os fra hub-arrangementerne
                    subscriptionMethod = hub.off;
                }

                Gå igennem alle medlemmer på hubben og find klienthub-funktioner for at abonnere eller afmelde dig
                for (memberKey in hub.client) {
                    hvis (hub.client.hasOwnProperty(memberKey)) {
                        memberValue = hub.client[memberKey];

                        hvis (!$.isFunction(memberValue)) {
                            Ikke en klienthub-funktion
                            fortsæt;
                        }

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

    $.hubConnection.prototype.createHubProxies = function () {
        var proxies = {};
        this.starting(funktion () {
            Registrer hub-proxies som abonnerede
            (instance, shouldSubscribe)
            registerHubProxies (proxies, true);

            this._registerSubscribedHubs();
        }).disconnected(function () {
            Afmeld alle hub-proxies, når vi "afbryder".  Dette er for at sikre, at vi ikke genindsætter funktionelle callbacks.
            (instance, shouldSubscribe)
            registerHubProxies (proxies, falsk);
        });

        proxies['positionVehicle'] = this.createHubProxy('positionVehicle');
        proxies['positionVehicle'].client = { };
        proxies['positionVehicle'].server = {
            hello: funktion (navn) {
                return proxies['positionVehicle'].invoke.apply(proxies['positionVehicle'], $.merge(["Hello"], $.makeArray(arguments)));
             }
        };

        returnere stedfortrædere;
    };

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

}(window.jQuery, window));


Derefter tester vi det, og koden er som følger:



Testresultaterne er som følger:


De første to beskeder, vi modtog, blev begge sendt af os selv, og vi modtog dem også, og den tredje besked blev sendt af mig, som åbnede en anden browser, og vi modtog den også.

Da jeg modtog beskeden, var det ikke en websocket, men faktisk en HTTP-afstemning, fordi vores js rapporterede en fejl

Hvad angår hvorfor js-fejlen blev rapporteret, vil vi tale om det næste gang.









Tidligere:asp.net mvc4.0 Installation af SignalR (1)
Næste:Fejlkode: 1175. Du bruger sikker opdateringstilstand, og du prøvede at opdatere en ta...
 Udlejer| Opslået på 05/07/2017 14.53.15 |
. .NET vises ved hjælp af SignalRFejl under WebSocket-håndtryk
Under udviklingsprocessen stødte jeg på følgende fejl: WebSocket-forbindelse til 'ws://*****' mislykkedes: Fejl under WebSocket-håndtryk: net::ERR_CONNECTION_RESET.

Grunden til, at websocket ikke kan bruges, er, at web.config-filen ikke er konfigureret. For at SignalR skal køre korrekt, kræves tilføjelse af følgende konfigurationselement under system.web-noden:



targetFramework sat til 4.5
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com