nginx_http_push_module
?我还没有尝试过(但是呢?),但这可能正是我们所需要的...你不必学习一门新语言来实现这样的功能。
例如,你可以使用 Quercus(PHP 的 Java 实现)并利用 JVM 的内存管理模型实现服务器 Comet 应用程序。
以下是您需要的解决方案:
几乎完整的COMET解决方案(使用PHP和一个用Perl编写的文件): http://translate.google.com/translate?js=y&prev=_t&hl=ru&ie=UTF-8&layout=1&eotf=1&u=http://dklab.ru/lib/dklab_multiplexor/&sl=ru&tl=en
精确的PHP COMET解决方案(我认为这就是您想要的): http://translate.google.com/translate?hl=ru&sl=ru&tl=en&u=http://dklab.ru/lib/dklab_realplexor/
Ajax 长轮询是一种简单的解决方案,jQuery 和其他主要 JS 框架都有插件可以帮助你实现。
Node.js似乎是这种情况下一个相当不错的解决方案。(虽然对于生产来说还有点游戏化,但仍然很酷)。PHP对于这种情况来说是一个可怕的环境,因为你必须改变服务器与请求交互的方式,因为你不再立即响应。Python有一些像Twisted这样的服务器非常适合这种情况,因为它们让你成为服务器。无论你用什么语言编写,你都必须改变典型的请求/响应模型。(例如,Glassfish的Grizzly Comet服务器就可以为Java做到这一点)
首先,您需要了解什么是Comet应用程序。构建Comet应用程序所涉及的概念在维基百科上有解释,链接为Comet (programming)。
您需要了解的是,只要遵循维基百科上解释的概念,就可以使用任何编程语言来构建Comet应用程序。
1. Ajax长轮询。
2.Streaming
您可以在简单的“长轮询”示例代码中查看一些示例代码。
现在来谈谈问题 -
1.如果您使用ajax长轮询,则浏览器(ajax请求)将继续轮询服务器以获取数据。这可能会耗尽服务器上的内存或在一段时间后减慢浏览器速度。
一些建议
JQuery PeriodicalUpdater(AJAX长轮询/服务器轮询)
RobertFischer / JQuery-PeriodicalUpdater
您需要检查以下内容才能实施此操作 -
a)您期望服务器上的数据更新频率是多少。
b)服务器端脚本在发送数据到客户端之前运行多长时间以检查、获取和处理数据。
2.您可以通过使用以下方法来实现流 -
Dojo Charting + Lightstreamer Comet演示
您需要检查以下内容 -
a)您的托管提供商是否允许您在托管服务器上安装这些软件
b)您的RAM和带宽利用率(您将需要一个专用服务器,以获得大量RAM和带宽的套餐)
这取决于您的需求是什么以及如何。 您需要进行分析和处理。
如果你正在实现的是一个小型应用程序,可以选择Ajax长轮询,前提是你已经分析并处理了这种方法的负面影响。