我一直在寻找在浏览器中实现类似 gmail 消息传递的方法,并得出了 彗星 概念。但是,我一直无法找到一个好的 .NET 实现来允许我在 IIS 中执行此操作(我们的应用程序是用 ASP.NET 2.0 编写的)。

我找到的(或者就此而言可以想到的)解决方案需要为每个用户留下一个正在运行的线程 - 以便一旦他收到消息就可以向他返回响应。当然,这根本无法扩展。

所以我的问题是 - 您是否知道以不同方式工作的 Comet 的 ASP.NET 实现?IIS 可以做到这一点吗?

有帮助吗?

解决方案

由于 Comet 的持久连接性,Comet 很难通过 IIS 进行扩展,但现在有一个团队正在研究 Comet 场景。还看 亚伦·勒奇的博客 因为我相信他已经在 ASP.NET 中完成了一些早期的 Comet 工作。

其他提示

网络同步 是一个符合标准的可扩展 Comet 服务器,直接集成到 IIS/.NET 管道中。它还可以按需作为托管服务提供。

它官方支持每个服务器节点最多 20,000 个并发客户端连接,但个别测试发现它高达 50,000 个。消息吞吐量在 1,000-5,000 个并发客户端左右时最佳,单个节点每秒传送的消息高达 300,000 条。

它包括对 JavaScript、.NET/Mono、iOS、Mac OS X、Java、Silverlight、Windows Phone、Windows Runtime 和 .NET Compact 的客户端支持,以及对 .NET/Mono 和 PHP 的服务器端支持。

使用开箱即用的 SQL Server 或 Azure 缓存支持集群,但可以为几乎任何内容(Redis、NCache)编写自定义提供程序。

免责声明: 我在开发该产品的公司工作。

我最近写了一篇 长轮询聊天服务器的简单示例 使用基于 MVC 3 异步控制器 克莱·伦哈特 (Clay Lenhart) 的精彩文章

您可以使用 AppHarbor 部署示例 我根据 BitBucket 项目的源代码进行设置。

另外,更多信息可以从我的 解释该项目的博客文章.

实际上,使用 ASP.NET 创建支持 ajax 的网站有很多选择,但老实说, 戳进去 是创建 comet ajax 支持的 Web 应用程序的最简单方法。它拯救了我公司的一个项目。

您还可以查看 Kaazing企业网关 该公司已经发布了 webSocket [HTML5] 网关的产品版本,该网关完全取代了 comet 方式,并支持浏览器和应用程序服务器之间的全双工连接。

您也可以看看 流光演示

我很久以前曾经使用过一个聊天网站,它使用了定制的 http 流媒体服务器。事实上,我曾经出于纯粹的好奇而复制了该软件,而且我认为这很容易做到。我永远不会尝试在 IIS 中实现类似类型的“无限请求”,尤其是在 ASP.NET 中,因为请求无限期地占用线程池线程(或 IO 线程,如果使用异步处理程序),这意味着您只能在线程池配置允许的情况下,每个服务器可以处理尽可能多的数据。

如果我对此类功能有强烈的合法需求,我会诚实地为其编写一个自定义 http 服务器。

我知道这并不能真正回答你的问题,但我认为输入可能是相关的。

WS-I 小组发表了名为 “可靠的安全配置文件” 有一条玻璃鱼和 .NET 实现 显然 互操作 出色地。

运气好的话,有一个 JavaScript 实施也在那里。

还有一个 Silverlight 实现使用 HTTP 双工。 你可以 将 javascript 连接到 Silverlight 发生推送时获取回调的对象。

还有 商业付费版本 以及。

我认为 Comet 方法并不是真正可扩展的,除非您准备水平扩展 Web 场(通过添加更多 Web 服务器)。它的工作方式是,它为每个用户会话打开一个 TCP 连接,以便服务器可以不时地将内容推送到该连接中,以立即通知用户更改或活动。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top