Модуль чата SignalR в Orchard CMS - PullRequest
       18

Модуль чата SignalR в Orchard CMS

4 голосов
/ 31 января 2012

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

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

Я получаю ошибку 404 со всем, что я пытаюсь.У меня есть RAMFAR в webconfig, я попытался переписать URL на IIS.Я надеюсь, что это что-то ужасно простое, что мой переполненный мозг не может видеть.Я даже не знаю наверняка, что SignalR работает с Orchard, я подозревал, что будут некоторые трудности, хотя

Ответы [ 2 ]

6 голосов
/ 08 марта 2012

Это гораздо сложнее, чем описано в @mdm ... SignalR использует пользовательский HttpModule, который обрабатывает концентраторы .К сожалению, из-за динамической загрузки сборок модулей нет способа подключить этот HttpModule из модуля без изменения ядра Orchard.

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

ОБНОВЛЕНИЕ: Модуль почти завершен.В библиотеку SignalR было внесено много изменений, так как я начал так нуждаться, чтобы включить их.Кроме того, есть одно небольшое изменение в ядре Orchard (обработка сеансов), которое мне нужно нажать перед фактической публикацией модуля.

ОБНОВЛЕНИЕ 2: SignalR теперь использует Owin, поэтому гораздо проще подключитьвсе вверх.Садовый модуль доступен здесь .Вы также можете получить последний код из BitBucket.Кстати, я настоятельно рекомендую использовать код из ветви Orchard 1.x для разработки SignalR из-за изменений в обработке транзакций базы данных.

0 голосов
/ 31 января 2012

Какой URL-адрес выводится на странице? Какой URL вы ожидаете показать?

Обычно вы должны поместить код SignalR в Scripts/signalr и ссылочные сценарии со следующим в верхней части вашего представления:

@{
    Script.Include("signalr/script.js");
}

Или вы можете реализовать IResourceManifestProvider в своем модуле (Orchard.jQuery имеет фантастический пример этого, или см. Здесь ), а затем ссылаться на ваши сценарии, используя Script.Require:

@{
    Script.Require("SignalR_Hubs");
}
...