Подтвердить что ты не робот

SignalR - StartUp

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

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

Кажется, что $.connection.ticketHub или $.connection.chat возвращают объекты undefined. Есть ли что-то особенное, что мне нужно делать с /signalr/hubs? Любые другие мысли приветствуются.

4b9b3361

Ответ 1

Вам нужно добавить /signalr/hubs на страницу, это javascript, динамически генерируемый SignalR, содержащий заглушки методов для ваших концентраторов и методы на концентраторах.

Итак, если у вас есть .NET-хаб с именем TestHub, сгенерированный метод javascript SendMessage(string message), который вы можете вызвать из вызова JavaScript: $.connection.testHub.sendMessage("some message to server");

Направьте свой браузер на url:/signalr/hubs, и вы должны получить javascript.

около 150 строк вниз вы увидите заглушку ticketHub:

$.extend(signalR, {
   ticketHub: {
      _: {
          hubName: 'YourNameSpace.TicketHub',
          ignoreMembers: ['someMethod', 'namespace', 'ignoreMembers', 'callbacks'],
          connection: function () { return signalR.hub; }
      },

Вы можете использовать плагин Mozilla Firebug или инструменты разработчика Chrome (ключ-значок- > Инструменты- > Инструменты разработчика), чтобы увидеть, что отправлено и возвращено с сервера.

РЕДАКТИРОВАТЬ: Была ошибка, связанная с предупреждением SignalR/signalr/hubs, которое было правильно сгенерировано (оно не создавало заглушки метода). https://github.com/SignalR/SignalR/issues/134

EDIT2: у вас может быть неправильный тег script, попробуйте:

<script src="@Url.Content("~/signalr/hubs")" type="text/javascript"></script>

или вы не ссылались на сборку SignalR.AspNet.dll. Если я правильно назову это сборку, которая соединяет маршрут с/signalr.

Ответ 2

Используете ли вы IE8?

Если вы, убедитесь, что вы включили Json2 script ref над сигналомR script:

<script src="../../Scripts/json2.min.js" type="text/javascript"></script>

(Получить Json2 от Nuget)

Ответ 3

Ответ Ли Смита был прав на деньги. Я получил последний json2 от nuget, а также убедитесь, что у вас есть изменение в вашем web.config с сайта signalR faq:

  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
  </system.webServer>

Ответ 4

Измените тэг script на это:

<script type="text/javascript" src='<%= ResolveClientUrl("~/signalr/hubs") %>'></script>

Ответ 5

В Visual Studio 2010/MVC 3/Firefox Browser мой index.cshtml использует SignalR просто отлично со следующими

<script src="@Url.Content("~/Scripts/jquery-1.8.0.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.signalR-0.5.2.min.js")" type="text/javascript"></script>

<script src="/signalr/hubs" type="text/javascript"></script>

У меня была другая проблема, но мне не пришлось добавлять в @Url.Content к сигналу/хабам Для простоты при тестировании у меня также есть свой файл класса в корневой папке Controllers. У меня также есть следующее из Nuget

SignalR / SignalR.Js / SignalR.Server / SignalR.Hosting.AspNet / SignalR.Hosting.Common

(Не то, чтобы вам нужно все эти зависимости, но это то, что у меня есть)

Надеюсь, что кто-то поможет...