SignalR Hub не выполняет указанный javascript - PullRequest
2 голосов
/ 02 ноября 2011

Я использую SignalR в проекте веб-приложения ASP.Net, и у меня возникают проблемы.Моя цель - внести любые изменения в административную сторону сайта, чтобы обновить некоторые GridView.Я планировал сделать это, отправив сигнал на запуск некоторого javascript, тем самым обновив панели обновления, содержащие GridView.

Сейчас проблема в том, что я не могу получить ни один код, который пытается создать мой концентраторвызов выполнить в клиенте.Я получаю следующую ошибку в FireBug из файла jquery.SignalR.js, но я не уверен, как ее исправить:

Firefox can't establish a connection to the server at ws://localhost:40068/signalr?data=[]&transport=webSockets&clientId=92e4f7b9-0118-4fd9-bb55-5f22338d6162.

(function(n,t){"use strict";if(typeof ...on=n.signalR=i})(window.jQuery,window)

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

Я установил следующий хаб на моем сайте:

namespace testProject
{
    public class statusChanges : Hub
    {
        public void ServerChange()
        {
            Clients.serverChange();

        }
    }
}

У меня есть следующий код в моемсобытие нажатия кнопки в разделе администратора.Отладка показывает, что этот код выполняется сервером:

var clients = Hub.GetClients<statusChanges>();
clients.serverChange();

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

<script type="text/javascript">
    $(function () {
        var statusChange = $.connection.statusChanges;
        statusChange.serverChange = function () {
            alert(8);
        };
        $.connection.hub.start();
    });
</script>

Есть ли у кого-нибудь идеи, почему это не будет работать или что означает ошибка FireBug?

1 Ответ

5 голосов
/ 03 ноября 2011

Ошибка в firebug ожидается.Это сбой подключения к веб-сокету, не беспокойтесь об этом, так как SignalR переключится на длительный опрос.У вас есть метод на стороне сервера с тем же именем, что и на стороне клиента.Это не работает.

Вы хотите что-то вроде этого:

public Administration : Hub {
}

Обработчик событий:

var clients = Hub.GetClients<Administration>();
clients.serverChange();

Javascript:

<script type="text/javascript">
    $(function () {
        var administration= $.connection.administration;
        administration.serverChange = function () {
            alert(8);
        };
        $.connection.hub.start();
    });
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...