SignalR - StartUp
Я ищу быстрый и грязный ответ. Я просто гасну, и, смотря на экран более 12 часов, я думаю, что меня застрелили.
Я хочу сделать простое приложение SignalR в качестве учебника. Я нашел этот пример, но я все время получаю ошибку, что билеты undefined. Я нашел еще пару и продолжаю получать ту же ошибку. Я сравнил образец проекта с моим, и я не могу найти никаких сообщений.
Кажется, что $.connection.ticketHub
или $.connection.chat
возвращают объекты undefined. Есть ли что-то особенное, что мне нужно делать с /signalr/hubs
? Любые другие мысли приветствуются.
Ответы
Ответ 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
(Не то, чтобы вам нужно все эти зависимости, но это то, что у меня есть)
Надеюсь, что кто-то поможет...