Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 19123|Svare: 1

[ASP.NET] mvc 4.0 Hvordan bruke SignalR (2)

[Kopier lenke]
Publisert på 05.07.2017 11:15:08 | | | |
Først opprettet jeg en ny Hubs-mappe under prosjektet

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



Bygg opp prosjektet på nytt, og deretter refererer vi til de to følgende js-filene på visningssiden



Notat!!!

Filen "/Scripts/jquery.signalR-2.2.2.min.js" legges til installasjonen av SignalR og eksisterer på den fysiske disken

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

La oss se på js-filen generert av SignalR, som følger:

/*!
* ASP.NET SignalR JavaScript Library v2.2.2
* http://signalr.net/
*
* Opphavsrett (c) .NET Foundation. Alle rettigheter forbeholdt.
* Lisensiert under Apache-lisensen, versjon 2.0. Se License.txt i prosjektroten for lisensinformasjon.
*
*/

<referansesti="..\.\\SignalR.Client.JS\Scripts\jquery-1.6.4.js" />
<referansesti="jquery.signalR.js" />
(funksjon ($, vindu, udefinert) {
    <param name="$" type="jQuery" />
    "bruk strengt";

    hvis (typeof ($.signalR) !== "funksjon") {
        kast ny Error("SignalR: SignalR er ikke lastet. Vennligst sørg for at jquery.signalR-x.js refereres før ~/signalr/js.");
    }

    var signalR = $.signalR;

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

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

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

                hvis (!( hub.hubName)) {
                    Ikke en klienthub
                    fortsett;
                }

                hvis (shouldSubscribe) {
                    Vi ønsker å abonnere på hub-arrangementene
                    subscriptionMethod = hub.on;
                } ellers {
                    Vi ønsker å melde oss ut av hub-arrangementene
                    subscriptionMethod = hub.off;
                }

                Gå gjennom alle medlemmene på huben og finn funksjoner i klienthuben for å abonnere/avmelde deg
                for (memberKey in hub.client) {
                    hvis (hub.client.hasOwnProperty(memberKey)) {
                        memberValue = hub.client[memberKey];

                        hvis (!$.isFunction(memberValue)) {
                            Ikke en klienthub-funksjon
                            fortsett;
                        }

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

    $.hubConnection.prototype.createHubProxies = function () {
        var proxies = {};
        this.starting(function () {
            Registrer hub-proxyene som abonnert
            (instans, shouldSubscribe)
            registerHubProxies (proxyer, true);

            this._registerSubscribedHubs();
        }).disconnected(function () {
            Avmeld alle hub-proxyer når vi "kobler fra".  Dette er for å sikre at vi ikke legger til funksjonelle callbacks på nytt.
            (instans, shouldSubscribe)
            registerHubProxies (proxyer, falsk);
        });

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

        retur-proxyer;
    };

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

}(window.jQuery, window));


La oss teste det ut, og koden er som følger:



Testresultatene er som følger:


De to første meldingene vi mottok ble begge sendt av oss selv, og vi mottok dem også, og den tredje meldingen ble sendt av meg som åpnet en annen nettleser, og vi mottok den også.

Da jeg mottok meldingen, var det ikke en websocket, men faktisk en HTTP-poll, fordi vår js rapporterte en feil

Når det gjelder hvorfor js-feilen ble rapportert, skal vi snakke om neste gang.









Foregående:asp.net mvc4.0 Installerer SignalR (1)
Neste:Feilkode: 1175. Du bruker sikker oppdateringsmodus og prøvde å oppdatere en ta...
 Vert| Publisert på 05.07.2017 14:53:15 |
. .NET vises ved bruk av SignalRFeil under WebSocket-håndtrykk
Under utviklingsprosessen støtte jeg på følgende feil: WebSocket-tilkobling til 'ws://*****' feilet: Feil under WebSocket-håndtrykk: net::ERR_CONNECTION_RESET.

Grunnen til at websocket ikke kan brukes, er fordi web.config-filen ikke er konfigurert. For at SignalR skal kjøre korrekt må følgende konfigurasjonselement legges til under system.web-noden:



targetFramework satt til 4.5
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com