Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 19123|Odpověď: 1

[ASP.NET] mvc 4.0 Jak používat SignalR (2)

[Kopírovat odkaz]
Zveřejněno 05.07.2017 11:15:08 | | | |
Nejprve jsem vytvořil novou složku Hubs pod projektem

Také vytvořte nový soubor PositionVehicle pod složkou, jak je znázorněno na následujícím obrázku:



Projekt znovu postavit a poté na stránce zobrazení odkazujeme na následující dva js soubory



Poznámka!!!

Soubor "/Scripts/jquery.signalR-2.2.2.min.js" je přidán do instalace SignalR a existuje na fyzickém disku

"/signalr/hubs" jeSignalR je generován automaticky, který nelze najít na fyzickém disku!

Podívejme se na js soubor generovaný SignalR, a to následovně:

/*!
* ASP.NET JavaScriptová knihovna SignalR v2.2.2
* http://signalr.net/
*
* Copyright (c) .NET Foundation. Všechna práva vyhrazena.
* Licencováno pod licencí Apache, verze 2.0. Viz License.txt v kořeni projektu pro informace o licenci.
*
*/

<referenční cesta="..\.\SignalR.Client.JS\Scripts\jquery-1.6.4.js" />
<referenční cesta="jquery.signalR.js" />
(funkce ($, okno, nedefinované) {
    <název parametru="$" type="jQuery" />
    "používejte přísné";

    if (typeof ($.signalR) !== "funkce") {
        vyhoďte novou chybu ("SignalR: SignalR není načten. Prosím, ujistěte se, že jquery.signalR-x.js je před ~/signalr/js.");
    }

    var signalR = $.signalR;

    function makeProxyCallback(hub, callback) {
        Návratová funkce () {
            Nazvěte metodu klientského hubu
            callback.apply(hub, $.makeArray(arguments));
        };
    }

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

        pro (klíč v instanci) {
            if (instance.hasOwnProperty(key)) {
                hub = instance[key];

                if (!( hub.hubName)) {
                    Není to klientský hub
                    pokračujte;
                }

                pokud (by měl Subscribe) {
                    Chceme se přihlásit k odběru hub akcí
                    subscriptionMethod = hub.on;
                } jinak {
                    Chceme se odhlásit z hub akcí
                    subscriptionMethod = hub.off;
                }

                Projděte všechny členy hubu a najděte funkce klientského hubu pro odběr/odhlášení
                for (memberKey in hub.client) {
                    if (hub.client.hasOwnProperty(memberKey)) {
                        memberValue = hub.client[memberKey];

                        if (!$.isFunction(memberValue)) {
                            Není to funkce klientského hubu
                            pokračujte;
                        }

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

    $.hubConnection.prototype.createHubProxies = function () {
        var proxy = {};
        this.starting(function () {
            Zaregistrujte hubové proxy jako odebírané
            (instance, shouldSubscribe)
            registerHubProxies(proxy, true);

            this._registerSubscribedHubs();
        }).disconnected(function () {
            Odhlásit všechny hubové proxy, když se "odpojíme".  Cílem je zajistit, že nebudeme znovu přidávat funkční callbacky.
            (instance, shouldSubscribe)
            registerHubProxies(proxy, false);
        });

        proxy servery['positionVehicle'] = this.createHubProxy('positionVehicle');
        proxy členy['positionVehicle'].client = { };
        proxy členy['positionVehicle'].server = {
            Ahoj: funkce (název) {
                return proxy['positionVehicle'].invoke.apply(proxy ['positionVehicle'], $.merge(["Hello"], $.makeArray(arguments)));
             }
        };

        návratové proxy;
    };

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

}(window.jQuery, window));


Pak to otestujeme a kód je následující:



Výsledky testu jsou následující:


První dvě zprávy, které jsme obdrželi, jsme obě poslali my sami, a také jsme je obdrželi, a třetí zprávu jsem poslal já, když jsem otevřel jiný prohlížeč, a také jsme ji obdrželi.

Když jsem zprávu obdržel, nebyl to websocket, ale ve skutečnosti HTTP dotaz, protože náš js hlásil chybu

Co se týče toho, proč byla chyba js nahlášena, o tom si povíme příště.









Předchozí:asp.net mvc4.0 Instalace SignalR (1)
Další:Kód chyby: 1175. Používáte režim bezpečné aktualizace a snažili jste se aktualizovat a ta...
 Pronajímatel| Zveřejněno 05.07.2017 14:53:15 |
. .NET se objevuje pomocí SignalRChyba během handshake ve WebSocketu
Během vývoje jsem narazil na následující chybu: WebSocket připojení k 'ws://*****' selhalo: Chyba během WebSocket handshake: net::ERR_CONNECTION_RESET.

Důvodem, proč websocket nelze použít, je to, že soubor web.config není nakonfigurován. Pro správný provoz SignalR vyžaduje přidání následující konfigurační položky pod uzel system.web:



targetFramework nastaven na 4.5
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com