Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 19123|Отговор: 1

[ASP.NET] mvc 4.0 Как да използвате SignalR (2)

[Копирай линк]
Публикувано в 5.07.2017 г. 11:15:08 ч. | | | |
Първо, създадох нова папка Hubs под проекта

Също така, създайте нов файл PositionVehicle под папката, както е показано на следващата фигура:



Възстановете проекта и след това се позоваваме на следните два js файла на страницата за изглед



Бележка!!!

Файлът "/Scripts/jquery.signalR-2.2.2.min.js" се добавя към инсталацията на SignalR и съществува на физическия диск

"/signalr/hubs" еSignalR се генерира автоматично, който не може да се намери на физическия диск!

Нека разгледаме js файла, генериран от SignalR, както следва:

/*!
* ASP.NET SignalR JavaScript библиотека v2.2.2
* http://signalr.net/
*
* Авторски права (c) .NET Foundation. Всички права запазени.
* Лицензиран под лиценз Apache, версия 2.0. Вижте License.txt в root проекта за информация за лиценз.
*
*/

<reference path="..\.\SignalR.Client.JS\Scripts\jquery-1.6.4.js" />
<reference path="jquery.signalR.js" />
(функция ($, прозорец, неопределено) {
    <param name="$" type="jQuery" />
    "използвайте строго";

    ако (typeof ($.signalR) !== "функция") {
        throw new Error("SignalR: SignalR не е зареден. Моля, уверете се, че jquery.signalR-x.js е споменато преди ~/signalr/js.");
    }

    var signalR = $.signalR;

    function makeProxyCallback(hub, callback) {
        Функция за връщане () {
            Извикай метода client hub
            callback.apply(hub, $.makeArray(arguments));
        };
    }

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

        за (ключ в пример) {
            ако (instance.hasOwnProperty(key)) {
                hub = instance[key];

                ако (!( hub.hubName)) {
                    Не е клиентски хъб
                    продължете;
                }

                ако (трябваSubscribe) {
                    Искаме да се абонираме за събитията в хъба
                    subscriptionMethod = hub.on;
                } else {
                    Искаме да се отпишем от събитията в хъба
                    subscriptionMethod = hub.off;
                }

                Прегледайте всички членове в хъба и намерете функции на клиентския хъб, за да се абонирате или откажете
                за (memberKey в hub.client) {
                    if (hub.client.hasOwnProperty(memberKey)) {
                        memberValue = hub.client[memberKey];

                        ако (!$.isFunction(memberValue)) {
                            Не функция за клиентски хъб
                            продължете;
                        }

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

    $.hubConnection.prototype.createHubProxies = функция () {
        VAR проксита = {};
        this.starting(функция () {
            Регистрирайте хъбовите проксита като абонирани
            (инстанция, трябваАбонамент)
            registerHubProxies (проксита, вярно);

            this._registerSubscribedHubs();
        }).disconnected(функция () {
            Отпишете се от всички проксита на хъба, когато "прекъснем".  Това е, за да гарантираме, че няма да добавяме отново функционални обратни повиквания.
            (инстанция, трябваАбонамент)
            registerHubProxies (проксита, невярно);
        });

        proxies['positionVehicle'] = this.createHubProxy('positionVehicle');
        proxies['positionVehicle'].client = { };
        proxies['positionVehicle'].server = {
            здравейте: функция (име) {
                return proxies['positionVehicle'].invoke.apply(proxies['positionVehicle'], $.merge(["Hello"], $.makeArray(arguments)));
             }
        };

        връщане на проксита;
    };

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

}(window.jQuery, прозорец));


След това нека го тестваме и кодът е следният:



Резултатите от теста са следните:


Първите две съобщения, които получихме, бяха изпратени от нас сами, и ние също ги получихме, а третото съобщение беше изпратено от мен, който отвори друг браузър и също го получихме.

Когато получих съобщението, не беше websocket, а всъщност HTTP анкета, защото нашият js съобщи за грешка

Що се отнася до причината за докладване на грешката js, ще говорим за това следващия път.









Предишен:asp.net mvc4.0 Инсталиране на SignalR (1)
Следващ:Код на грешка: 1175. Използваш режим на безопасен ъпдейт и опита да обновиш та...
 Хазяин| Публикувано в 5.07.2017 г. 14:53:15 ч. |
. .NET се появява чрез SignalRГрешка по време на ръкостискане с WebSocket
По време на разработката срещнах следната грешка: WebSocket връзка с 'ws://*****' се провали: Грешка по време на WebSocket handshake: net::ERR_CONNECTION_RESET.

Причината, поради която websocket не може да се използва, е, че web.config файлът не е конфигуриран. За да работи правилно, SignalR изисква добавяне на следния конфигурационен елемент под възела system.web:



targetFramework настроен на 4.5
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com