Orchard CMS中的SignalR聊天模块

时间:2012-01-31 11:48:41

标签: asp.net-mvc iis orchardcms signalr

我正在为我正在处理的果园项目构建一个即时聊天模块。我想使用SignalR来支持聊天,但是我遇到了困难:

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

我尝试的所有内容都收到404错误。我在webconfig中有RAMFAR,我尝试重写IIS上的url。我希望这是一个非常简单的东西,我的大脑很难看到。我甚至不确定SignalR是否与Orchard合作,我怀疑会有一些困难

2 个答案:

答案 0 :(得分:6)

它比@mdm描述的要复杂得多...... SignalR使用自定义HttpModule来处理集线器。不幸的是,由于模块组件的动态加载,没有办法在不改变Orchard核心的情况下从模块连接HttpModule。

幸运的是,我设法解决了问题并让live demo with Orchard and SignalR一起玩得很好!让它工作非常棘手并涉及丢弃HttpModule以支持自定义路由实现。在做了一些必要的清理之后,我会将模块推送到Orchard Gallery并在此处发布更新。

更新:模块即将完成。 SignalR库有很多变化,因为我开始需要将这些变化合并。此外,在实际发布模块之前,我需要推送一个Orchard核心(会话处理)的轻微更改。

更新2: SignalR现在使用Owin,因此连接所有内容要容易得多。 Orchard模块可用here。您也可以从BitBucket获取latest code。 顺便说一下,由于数据库事务处理的变化,我强烈建议使用Orchard 1.x分支代码进行SignalR开发。

答案 1 :(得分:0)

页面上输出的URL是什么?您期望它显示什么URL?

通常你会将SignalR代码放在Scripts/signalr和引用脚本中,并在视图顶部显示以下内容:

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

或者您可以在模块中实现IResourceManifestProvider(Orchard.jQuery有一个很好的例子,或see here),然后使用Script.Require引用您的脚本:

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