我正在寻找如何使用 ASP.NET 实现反向 Ajax (Comet) 的基本示例。我已经看过下面的,我现在不想使用它们(因为它们是付费的)
http://www.frozenmountain.com/websync/ http://www.lightstreamer.com/demos.htm
我已经访问了 SO 上提到的各种链接。但他们中的大多数都指向外部 API。我正在寻找一个明确的例子来说明如何实现它。
我正在寻找如何使用 ASP.NET 实现反向 Ajax (Comet) 的基本示例。我已经看过下面的,我现在不想使用它们(因为它们是付费的)
http://www.frozenmountain.com/websync/ http://www.lightstreamer.com/demos.htm
我已经访问了 SO 上提到的各种链接。但他们中的大多数都指向外部 API。我正在寻找一个明确的例子来说明如何实现它。
不幸的是,你不会找到一个。反向 Ajax 是一项复杂的任务,它需要服务器端和客户端的“魔法”才能跨浏览器兼容、具有适当的状态和线程管理以及可扩展性。本质上,彗星服务器是每个客户端的流式连接(或长轮询)+ 智能线程管理。此外,对于合适的彗星服务器,您还必须完全实现Bayeux 协议。
CodeProject上有一篇文章介绍了如何在 IIS 中实现类似的功能,但即使这样也非常复杂。
我们已经考虑过实施我们自己的一些东西,但很快就决定不这样做,因为这会花费我们几个月的工作时间,所以这些产品的价格非常便宜。
此外,如果您真的对如何实现类似的东西感兴趣,最好的起点是深入研究 WebSync 源代码,因为它没有被混淆。不过要小心抄袭,因为他们有很多独特的专业知识。
另一种选择是考虑其他平台(其他语言的开源彗星服务器)。您可能会发现它们比 C# 更适合该任务。例如,你会发现用 erlang 编写一个 comet 服务器非常容易。
编辑:实际上已经有两个关于 SO 的类似问题可能对您有所帮助: ASP.NET 的彗星实现?和简单的“长轮询”示例代码?
我一直在寻找同样的东西,我发现https://github.com/nmosafi/aspComet是开源的(如果你愿意,你可以为它做出贡献)。他们在网站上有一个工作示例,您可以查看。他们有一个人在博客上写一些你可能会觉得有用的设计决策等(博客链接)
如果您愿意考虑将 Silverlight PollingDuplexHttpBinding作为将 Javascript 链接到您的服务器的一种方式,请参阅此 SO 问题。