Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 19123|Antwoord: 1

[ASP.NET] mvc 4.0 Hoe gebruik van SignalR (2)

[Link kopiëren]
Geplaatst op 05-07-2017 11:15:08 | | | |
Eerst heb ik een nieuwe Hubs-map onder het project aangemaakt

Maak ook een nieuw PositionVehicle-bestand aan onder de map, zoals weergegeven in de volgende figuur:



Bouw het project opnieuw op, en vervolgens verwijzen we naar de volgende twee js-bestanden op de weergavepagina



Notitie!!!

Het bestand "/Scripts/jquery.signalR-2.2.2.min.js" wordt toegevoegd aan de installatie van SignalR en bevindt zich op de fysieke schijf

"/signaler/hubs" isSignalR wordt automatisch gegenereerd, die niet op de fysieke schijf te vinden is!

Laten we eens kijken naar het js-bestand dat door SignalR is gegenereerd, als volgt:

/*!
* ASP.NET SignalR JavaScript Library v2.2.2
* http://signalr.net/
*
* Auteursrecht (c) .NET Foundation. Alle rechten voorbehouden.
* Gelicentieerd onder de Apache License, versie 2.0. Zie License.txt in de projectroot voor licentie-informatie.
*
*/

<referentiepad="..\..\SignalR.Client.JS\Scripts\jquery-1.6.4.js" />
<referentiepad="jquery.signalR.js" />
(functie ($, window, ongedefinieerd) {
    <param name="$" type="jQuery" />
    "gebruik streng";

    als (typeof ($.signalR) !== "functie") {
        gooi nieuwe foutmelding ("SignalR: SignalR is niet geladen. Zorg ervoor dat jquery.signalR-x.js wordt genoemd vóór ~/signalr/js.");
    }

    var signalR = $.signalR;

    function makeProxyCallback(hub, callback) {
        Retourfunctie () {
            Roep de client hub-methode aan
            callback.apply(hub, $.makeArray(arguments));
        };
    }

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

        voor (sleutel in voorbeeld) {
            als (instance.hasOwnProperty(key)) {
                hub = instance[key];

                als (!( hub.hubName)) {
                    Geen clienthub
                    Ga door;
                }

                if (shouldSubscribe) {
                    We willen ons abonneren op de hub-evenementen
                    subscriptionMethod = hub.on;
                } anders {
                    We willen ons afmelden van de hub-evenementen
                    subscriptionMethod = hub.off;
                }

                Loop door alle leden op de hub en vind clienthubfuncties om je aan te melden of te verlaten
                for (memberKey in hub.client) {
                    if (hub.client.hasOwnProperty(memberKey)) {
                        memberValue = hub.client[memberKey];

                        if (!$.isFunction(memberValue)) {
                            Geen clienthubfunctie
                            Ga door;
                        }

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

    $.hubConnection.prototype.createHubProxies = function () {
        var proxies = {};
        this.starting(functie () {
            Registreer de hub-proxies als geabonneerd
            (instance, shouldSubscribe)
            registerHubProxies (proxies, waar);

            this._registerSubscribedHubs();
        }).disconnected(functie () {
            Meld alle hubproxies uit wanneer we "verbreken".  Dit is om te voorkomen dat we functionele callbacks opnieuw toevoegen.
            (instance, shouldSubscribe)
            registerHubProxies (proxies, false);
        });

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

        geef proxy's terug;
    };

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

}(window.jQuery, window));


Laten we het dan testen en de code is als volgt:



De testresultaten zijn als volgt:


De eerste twee berichten die we ontvingen, waren allebei door onszelf verstuurd, en wij ontvingen ze ook, en het derde bericht werd door mij gestuurd die een andere browser opende, en wij ontvingen het ook.

Toen ik het bericht ontving, was het geen websocket, maar eigenlijk een HTTP-poll, omdat onze js een foutmelding had gemeld

Wat betreft waarom de fout in de js werd gemeld, daar zullen we het de volgende keer over hebben.









Vorig:asp.net mvc4.0 Installeren van SignalR (1)
Volgend:Foutcode: 1175. Je gebruikt de veilige updatemodus en je hebt geprobeerd een ta...
 Huisbaas| Geplaatst op 05-07-2017 14:53:15 |
. .NET verschijnt met behulp van SignalRFout tijdens WebSocket-handshake
Tijdens het ontwikkelproces kwam ik de volgende fout tegen: WebSocket-verbinding met 'ws://*****' mislukt: Fout tijdens WebSocket-handshake: net::ERR_CONNECTION_RESET.

De reden dat de websocket niet gebruikt kan worden, is omdat het web.config-bestand niet is geconfigureerd. Om SignalR correct te laten draaien moet je het volgende configuratie-item toevoegen onder de system.web-node:



targetFramework ingesteld op 4.5
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com