Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 19123|Odpoveď: 1

[ASP.NET] mvc 4.0 Ako používať SignalR (2)

[Kopírovať odkaz]
Zverejnené 5. 7. 2017 11:15:08 | | | |
Najprv som vytvoril nový priečinok Hubs pod projektom

Tiež vytvorte nový súbor PositionVehicle v priečinku, ako je znázornené na nasledujúcom obrázku:



Znovu postavte projekt a potom na stránke zobrazenia odkazujeme na nasledujúce dva js súbory



Nota!!!

Súbor "/Scripts/jquery.signalR-2.2.2.min.js" je pridaný do inštalácie SignalR a existuje na fyzickom disku

"/signalr/hubs" jeSignalR sa generuje automaticky, ktorý sa nenachádza na fyzickom disku!

Pozrime sa na js súbor generovaný SignalR, nasledovne:

/*!
* ASP.NET SignalR JavaScript Library v2.2.2
* http://signalr.net/
*
* Copyright (c) .NET Foundation. Všetky práva vyhradené.
* Licencované pod licenciou Apache, verzia 2.0. Pozrite si License.txt v koreňovej časti projektu pre informácie o licenciách.
*
*/

<referenčná cesta="..\..\SignalR.Client.JS\Scripts\jquery-1.6.4.js" />
<referenčná cesta="jquery.signalR.js" />
(funkcia ($, okno, nedefinované) {
    <názov parametra="$" typ="jQuery" />
    "používajte prísne";

    ak (typeof ($.signalR) !== "funkcia") {
        throw new Error("SignalR: SignalR sa nenačíta. Prosím, uistite sa, že jquery.signalR-x.js je referencované pred ~/signalr/js.");
    }

    var signalR = $.signalR;

    function makeProxyCallback(hub, callback) {
        Návratová funkcia () {
            Volajte metódu client hub
            callback.apply(hub, $.makeArray(arguments));
        };
    }

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

        pre (kľúč v inštancii) {
            if (instance.hasOwnProperty(key)) {
                hub = inštancia[key];

                ak (!( hub.hubName)) {
                    Nie je to klientské centrum
                    pokračovať;
                }

                ak (by mal Subscribe) {
                    Chceme sa prihlásiť na odber hubových podujatí
                    subscriptionMethod = hub.on;
                } inak {
                    Chceme sa odhlásiť z hubových podujatí
                    subscriptionMethod = hub.off;
                }

                Prejdite všetkými členmi hubu a nájdite funkcie klientského hubu na odber/odhlásenie
                for (memberKey in hub.client) {
                    if (hub.client.hasOwnProperty(memberKey)) {
                        memberValue = hub.client[memberKey];

                        if (!$.isFunction(memberValue)) {
                            Nie je to funkcia klienta
                            pokračovať;
                        }

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

    $.hubConnection.prototype.createHubProxies = function () {
        var proxy = {};
        this.starting(function () {
            Zaregistrujte hub proxy ako prihlásené
            (inštancia, mal by sa prihlásiť)
            registerHubProxies (proxy, true);

            this._registerSubscribedHubs();
        }).disconnected(function () {
            Odhláste všetky hub proxy, keď sa "odpojíme".  Je to preto, aby sme nepridávali funkčné spätné volania.
            (inštancia, mal by sa prihlásiť)
            registerHubProxies(proxy, false);
        });

        proxy['positionVehicle'] = this.createHubProxy('positionVehicle');
        proxy['positionVehicle'].client = { };
        proxies['positionVehicle'].server = {
            Ahoj: Function (meno) {
                return proxy['positionVehicle'].invoke.apply(proxies['positionVehicle'], $.merge(["Hello"], $.makeArray(arguments)));
             }
        };

        návratové proxy;
    };

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

}(window.jQuery, window));


Potom to otestujme a kód je nasledovný:



Výsledky testov sú nasledovné:


Prvé dve správy, ktoré sme dostali, sme obe poslali my sami, a aj my sme ich dostali, a tretiu správu som poslal ja, keď som otvoril ďalší prehliadač, a tiež sme ju dostali.

Keď som dostal správu, nebola to websocket, ale vlastne HTTP dotaz, pretože náš JS hlásil chybu

Čo sa týka toho, prečo bola chyba js nahlásená, povieme si o tom nabudúce.









Predchádzajúci:asp.net mvc4.0 Inštalácia SignalR (1)
Budúci:Kód chyby: 1175. Používate režim bezpečnej aktualizácie a pokúsili ste sa aktualizovať a ta...
 Prenajímateľ| Zverejnené 5. 7. 2017 14:53:15 |
. .NET sa zobrazuje pomocou SignalRChyba počas handshake vo WebSocket
Počas vývoja som narazil na nasledujúcu chybu: WebSocket pripojenie k 'ws://*****' zlyhalo: Chyba počas WebSocket handshake: net::ERR_CONNECTION_RESET.

Dôvod, prečo websocket nemožno použiť, je ten, že súbor web.config nie je nakonfigurovaný. Aby SignalR správne fungoval, je potrebné pridať nasledujúcu konfiguračnú položku pod uzol system.web:



targetFramework nastavený na 4.5
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com