SignalR - StartUp - PullRequest
       6

SignalR - StartUp

13 голосов
/ 19 января 2012

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

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

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

Ответы [ 5 ]

14 голосов
/ 20 января 2012

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

Таким образом, если у вас есть .NET-хаб с именем TestHub, с методом, называемым SendMessage(string message), будет сгенерирован javascript, чтобы вы могли из JavaScript вызвать:

Укажите в браузере 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 (wrench-icon-> Инструменты-> Инструменты разработчика), чтобы увидеть, что отправлено и возвращено с сервера.

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

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

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

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

3 голосов
/ 05 октября 2012

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

  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
  </system.webServer>
3 голосов
/ 23 января 2012

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

Если это так, убедитесь, что вы включили ссылку на Json2 выше сценария signalR:

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

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

2 голосов
/ 15 августа 2012

В 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

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

Надеюсь, это кому-нибудь поможет ...

2 голосов
/ 14 июня 2012

Измените свой скрипт тега на это:

<script type="text/javascript" src='<%= ResolveClientUrl("~/signalr/hubs") %>'></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...