Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 19123|Ответ: 1

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

[Скопировать ссылку]
Опубликовано 05.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 Library v2.2.2
* http://signalr.net/
*
* Авторские права (c) Фонд .NET. Все права защищены.
* Лицензировано под лицензией 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" />
    «использовать строго»;

    если (тип ($.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(экземпляр, shouldSubscribe) {
        var key, hub, memberKey, memberValue, subscriptionMethod;

        для (ключ в примере) {
            if (instance.hasOwnProperty(key)) {
                hub = экземпляр[ключ];

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

                if (shouldSubscribe) {
                    Мы хотим подписаться на события хаба
                    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(function () {
            Зарегистрируйте хаб-прокси как подписанные
            (экземпляр, должен подписаться)
            registerHubProxies (прокси, true);

            this._registerSubscribedHubs();
        }).disconnected(функция () {
            Отписывайтесь от всех прокси хаба, когда мы «отключаемся».  Это делается для того, чтобы не добавлять функциональные обратные вызовы.
            (экземпляр, должен подписаться)
            registerHubProxies (прокси, ложно);
        });

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

        возвратные прокси;
    };

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

}(window.jQuery, окно));


Затем давайте протестируем, и код выглядит следующим образом:



Результаты теста следующие:


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

Когда я получил сообщение, это был не веб-сокет, а HTTP-опрос, потому что наш js сообщил об ошибке

Что касается причин сообщения об ошибке js, мы поговорим об этом в следующий раз.









Предыдущий:asp.net mvc4.0 Установка SignalR (1)
Следующий:Код ошибки: 1175. Вы используете режим безопасного обновления и пытались обновить та...
 Хозяин| Опубликовано 05.07.2017 14:53:15 |
. .NET появляется с помощью SignalRОшибка при рукопожатии WebSocket
В процессе разработки я столкнулся со следующей ошибкой: подключение WebSocket к 'ws://*****' не удалось; Ошибка при рукопожатии WebSocket: net::ERR_CONNECTION_RESET.

Причина, по которой websocket нельзя использовать, заключается в том, что файл web.config не настроен. Для корректной работы SignalR требуется добавить следующий элемент конфигурации под узлом system.web:



targetFramework установлен на 4.5
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com