Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 19123|Odpowiedź: 1

[ASP.NET] mvc 4.0 Jak korzystać z SignalR (2)

[Skopiuj link]
Opublikowano 05.07.2017 11:15:08 | | | |
Najpierw utworzyłem nowy folder Hubs w ramach projektu

Utworz także nowy plik PositionVehicle w folderze, jak pokazano na poniższym rysunku:



Odbuduj projekt, a następnie odwołujemy się do dwóch kolejnych plików js na stronie widoku



Nuta!!!

Plik "/Scripts/jquery.signalR-2.2.2.min.js" jest dodawany do instalacji SignalR i znajduje się na fizycznym dysku

"/signalr/hubs" toSignalR jest generowany automatycznie, którego nie można znaleźć na fizycznej płycie!

Przyjrzyjmy się plikowi js wygenerowanemu przez SignalR, w następujący sposób:

/*!
* ASP.NET Biblioteka JavaScript SignalR v2.2.2
* http://signalr.net/
*
* Copyright (c) .NET Foundation. Wszelkie prawa zastrzeżone.
* Licencjonowane na licencji Apache, wersja 2.0. Zobacz License.txt w korzeniu projektu, aby uzyskać informacje o licencji.
*
*/

<ścieżka referencyjna="..\..\SignalR.Client.JS\Scripts\jquery-1.6.4.js" />
<ścieżka referencyjna="jquery.signalR.js" />
(funkcja ($, okno, niezdefiniowane) {
    <nazwa parametru="$" type="jQuery" />
    "używaj stricte";

    if (typeof ($.signalR) !== "function") {
        wyrzuć nowy błąd("SignalR: SignalR nie jest załadowany. Prosimy upewnić się, że jquery.signalR-x.js jest odwoływane przed ~/signalr/js.");
    }

    var signalR = $.signalR;

    function makeProxyCallback(hub, callback) {
        Funkcja zwrotu () {
            Metoda klienta hub
            callback.apply(hub, $.makeArray(arguments));
        };
    }

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

        dla (klucz w instancji) {
            if (instance.hasOwnProperty(key)) {
                hub = instancja[key];

                if (!( hub.hubName)) {
                    To nie centrum klienta
                    kontynuacja;
                }

                if (shouldSubscribe) {
                    Chcemy subskrybować wydarzenia w centrum
                    subscriptionMethod = hub.on;
                } else {
                    Chcemy wypisać się z wydarzeń hub
                    subscriptionMethod = hub.off;
                }

                Przejdź przez wszystkich członków huba i znajdź funkcje klienta huba, aby subskrybować/wypisać
                for (memberKey in hub.client) {
                    if (hub.client.hasOwnProperty(memberKey)) {
                        memberValue = hub.client[memberKey];

                        if (!$.isFunction(memberValue)) {
                            To nie funkcja centrum klienta
                            kontynuacja;
                        }

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

    $.hubConnection.prototype.createHubProxies = function () {
        var proxies = {};
        this.starting(function () {
            Zarejestruj proxy hubów jako subskrybowane
            (instancja, powinniśSubscribe)
            registerHubProxies(proxy, true);

            this._registerSubscribedHubs();
        }).disconnected(function () {
            Zrezygnuj ze wszystkich hub proxy, gdy się "rozłączymy".  Ma to na celu zapewnienie, że nie dodamy ponownie funkcjonalnych callbacków.
            (instancja, powinniśSubscribe)
            registerHubProxies(proxy, false);
        });

        proxy['positionVehicle'] = this.createHubProxy('positionVehicle');
        proxy['positionVehicle'].client = { };
        proxies['positionVehicle'].server = {
            Cześć: funkcja (nazwa) {
                return proxy['positionVehicle'].invoke.apply(proxy['positionVehicle'], $.merge(["Hello"], $.makeArray(arguments)));
             }
        };

        zastępstwa zwrotne;
    };

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

}(window.jQuery, window));


Następnie przetestujmy to i kod wygląda następująco:



Wyniki testów są następujące:


Pierwsze dwie wiadomości, które otrzymaliśmy, zostały wysłane przez nas samych, my też je otrzymaliśmy, a trzecią wiadomość wysłałem przeze mnie, otwierając inną przeglądarkę, i też ją otrzymaliśmy.

Gdy otrzymałem wiadomość, nie był to websocket, lecz faktycznie ankieta HTTP, ponieważ nasz js zgłosił błąd

Jeśli chodzi o to, dlaczego zgłoszono błąd js, opowiemy o tym następnym razem.









Poprzedni:asp.net mvc4.0 Instalacja SignalR (1)
Następny:Kod błędu: 1175. Używasz trybu bezpiecznej aktualizacji i próbowałeś zaktualizować ta...
 Ziemianin| Opublikowano 05.07.2017 14:53:15 |
. .NET pojawia się z użyciem SignalRBłąd podczas uścisku ręki WebSocket
Podczas procesu tworzenia napotkałem następujący błąd: Połączenie WebSocket z 'ws://*****' zawiodło: Błąd podczas handshake WebSocket: net::ERR_CONNECTION_RESET.

Powodem, dla którego websocket nie można użyć, jest brak konfiguracji pliku web.config. Aby SignalR działał poprawnie, trzeba dodać następujący element konfiguracyjny pod węzłem system.web:



targetFramework ustawiony na 4.5
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com