我将在 Python 中实现 Comet(尽管我听说了关于 erlycomet 的好消息,但除了后端中的所有其他内容之外,我对支持基于 Erlang 的 Web 服务器并不感到兴奋)。我发现了几种可能性:
(还有其他一些与 Java 服务器交互的选择,但我对这些不感兴趣)
考虑到性能、社区和易于实施,有人可以在这些实施中提出建议吗?
我个人使用 Orbited,既因为我已经在使用 Twisted,又因为它看起来很成熟。Twisted 拥有许多用户的悠久历史,尤其是与 Diesel 和 Tornado 相比。Orbited 确实建立在 Twisted 之上。
这里有一篇很好的博客文章,涵盖了端到端的轨道解决方案。它将数据从 python 脚本发送到 STOMP 服务器 (MorbidQ) 到 Orbited 到 Javascript - 将该数据呈现为图形。
龙卷风对现场来说似乎很新,我找不到扭曲彗星,也没有听说过柴油。我特别喜欢 Orbited 可以转发任何类型的 tcp/ip 的方式,但可以很容易地将 javascript 客户端与消息传递 STOMP 后端挂钩。
如果您正在寻找编写 Comet 应用程序,我会推荐 Orbited。
是什么让 Comet 实现起来更复杂(比制作 Ajax 应用程序),您需要客户端(Comet javascript 客户端)和服务器(像 Twisted 这样的异步 Web 服务器)协同工作,这就是您得到的使用 Orbited - javascript 客户端和服务器。
Tornado 和 Diesel 都主要提供异步服务器部分,但缺少重要的客户端 JavaScript 代码。
另外,围绕 Orbited 有一个相当不错的社区,有几个人正在用它构建很酷的应用程序,这个页面显示了其中的几个应用程序:http: //orbited.org/wiki/Sites
你确定彗星了吗?为什么不是 WebSockets?如果后者也是一个选项,我想参考在 Twisted 中实现 WebSockets 的https://github.com/tavendo/AutobahnPython(文档可在http://autobahn.ws/python上找到)。它符合标准,具有基于消息的基本 API 和用于基于帧/流处理的高级 API 以及更多好东西。
我也一直在使用 Twisted。但我使用的是 Nevow.Athena,而不是 Orbited。这真的很简单:阅读LiveElement 教程了解更多信息。
Tornado 工作正常,您可以在此处完善 websockets 示例: https ://github.com/Introduction-to-Tornado/Introduction-to-Tornado/tree/master/asynchronous_web_services/websockets