Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 19123|Svar: 1

[ASP.NET] mvc 4.0 Hur man använder SignalR (2)

[Kopiera länk]
Publicerad på 2017-07-05 11:15:08 | | | |
Först skapade jag en ny Hubs-mapp under projektet

Skapa också en ny PositionVehicle-fil under mappen, som visas i följande figur:



Bygg om projektet, och sedan refererar vi till följande två js-filer på visningssidan



Not!!!

Filen "/Scripts/jquery.signalR-2.2.2.min.js" läggs till i installationen av SignalR och finns på den fysiska disken

"/signaler/hubs" ärSignalR genereras automatiskt, som inte kan hittas på den fysiska disken!

Låt oss titta på js-filen som genereras av SignalR, enligt följande:

/*!
* ASP.NET SignalR JavaScript Library v2.2.2
* http://signalr.net/
*
* Upphovsrätt (c) .NET Foundation. Alla rättigheter förbehållna.
* Licensierad under Apache License, version 2.0. Se License.txt i projektets rot för licensinformation.
*
*/

<referensväg="..\..\SignalR.Client.JS\\Scripts\jquery-1.6.4.js" />
<referensbana="jquery.signalR.js" />
(funktion ($, fönster, odefinierat) {
    <param name="$" type="jQuery" />
    "använd strikt";

    om (typeof ($.signalR) !== "funktion") {
        kasta nytt fel("SignalR: SignalR är inte laddad. Se till att jquery.signalR-x.js refereras före ~/signalr/js.");
    }

    var signalR = $.signalR;

    function makeProxyCallback(hub, callback) {
        returneringsfunktion () {
            Anropa klienthubbens metod
            callback.apply(hub, $.makeArray(arguments));
        };
    }

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

        för (nyckel i instans) {
            om (instance.hasOwnProperty(key)) {
                hub = instans[nyckel];

                om (!( hub.hubName)) {
                    Inte en klienthubb
                    fortsätt;
                }

                om (shouldSubscribe) {
                    Vi vill prenumerera på hub-evenemangen
                    subscriptionMethod = hub.on;
                } annars {
                    Vi vill avprenumerera på hub-evenemangen
                    subscriptionMethod = hub.off;
                }

                Gå igenom alla medlemmar på hubben och hitta klienthubbfunktioner för att prenumerera/avprenumerera
                för (memberKey in hub.client) {
                    om (hub.client.hasOwnProperty(memberKey)) {
                        memberValue = hub.client[memberKey];

                        om (!$.isFunction(memberValue)) {
                            Inte en klienthubbfunktion
                            fortsätt;
                        }

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

    $.hubConnection.prototype.createHubProxies = function () {
        var proxies = {};
        this.starting(function () {
            Registrera hubvproxies som prenumererade
            (instans, shouldSubscribe)
            registerHubProxies (proxies, true);

            this._registerSubscribedHubs();
        }).disconnected(function () {
            Avprenumerera alla hubbproxies när vi "kopplar bort".  Detta är för att säkerställa att vi inte lägger till funktionella återkopplingar.
            (instans, shouldSubscribe)
            registerHubProxies (proxies, false);
        });

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

        återvända proxyer;
    };

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

}(window.jQuery, window));


Sedan testar vi det och koden är följande:



Testresultaten är följande:


De två första meddelandena vi fick skickades båda av oss själva, och vi fick dem också, och det tredje meddelandet skickades av mig som öppnade en annan webbläsare, och vi fick det också.

När jag fick meddelandet var det inte en websocket, utan faktiskt en HTTP-poll, eftersom vår js rapporterade ett fel

När det gäller varför js-felet rapporterades, kommer vi att prata om det nästa gång.









Föregående:asp.net mvc4.0 Installerar SignalR (1)
Nästa:Felkod: 1175. Du använder säkert uppdateringsläge och du försökte uppdatera en ta...
 Hyresvärd| Publicerad på 2017-07-05 14:53:15 |
. .NET används med SignalRFel under WebSocket-handskakning
Under utvecklingsprocessen stötte jag på följande fel: WebSocket-anslutning till 'ws://*****' misslyckades: Fel under WebSocket-handshake: net::ERR_CONNECTION_RESET.

Anledningen till att websocket inte kan användas är att web.config-filen inte är konfigurerad. För att SignalR ska fungera korrekt krävs att följande konfigurationspunkt läggs till under system.web-noden:



targetFramework satt till 4.5
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com