2014-01-26 33 views
0

我有工作像这样一个简单的数据流:服务器发送的事件

客户注册到事件的创造者服务器, 第三方发出一个POST请求到服务器, 和服务器,然后发送一个事件给它的所有监听器(客户端)。

发送事件我以为我会使用服务器发送的事件,但我有问题,因为发送事件的脚本没有在任何时间运行,所以任何试图连接到事件的人只是继续试图连接和没有任何东西,当第三方确实发布帖子时,没有人注册运行脚本的事件。

我该如何保持脚本始终运行?如果我这样做,这不会造成资源泄漏吗?

有没有办法做到这一点,以便您注册“未来”脚本将创建的任何事件?

回答

0

基本上你需要在这个看作两个完全独立的问题:

  1. 如何事件发布到用户通知队列
  2. 我怎样做近乎即时通知订阅的客户端

让我们开始2)

有很多的方法,应付这一非常普遍的问题,其中有许多依赖性。如果您控制服务器(在根级别上),您可以从众多选项中进行选择,但是如果您希望在任何低成本PH​​P环境中使用此服务器,我建议您长时间进行投票,以轻松熟悉并且容易理解的方式技术:您有客户端通过AJAX调查服务器,服务器端轮询脚本监视服务器上的事件。只有在30-120秒内停留在超时时间之后才能从脚本中返回(同时可能会发送一些占位符)。如果发生事件,请立即返回事件。

这解决了你不断运行的脚本问题:客户端保持运行。

假设你得到了这个,1.看起来很平凡:将事件发布到中央队列(例如数据库)并踢出轮询者例如通过SHM或文件删除。