2011-01-21 107 views
1

什么是使用Web服务实现服务器到客户端回调(事件)的好方法?客户端mod_perl服务器事件

我们已经有了一个基于SOAP的API,它由运行在Apache上的mod_perl公开,但它是服务器的一种客户端方式。我们需要通知其他客户端在服务器上发生的某些更改。

什么是使这项工作的好方法?可用的perl模块?

我们认为的一件事是做一个长时间运行的web请求,最终会在事件发生时做出响应,但是如果连接了很多客户端,这似乎会保留太多的mod_perl进程。

回答

3

其中一种方法就是您提到的长期投票。另一个是websockets。有许多Perl框架能够处理websockets请求,其中之一是Mojolicious

有关示例,请参阅Mojolicious::Lite#WebSockets处的文档。

我会建议你的情况分别从mod_perl服务器运行websockets webapp,以及“仅仅”使用Apache来反向代理mojolicious应用程序。

+0

只需要注意一点:就像OP问道的那样,长时间运行的民意调查对可扩展性不利,因为它们将在投票期间为单个客户端绑定单个apache进程。另外,网络套接字是新的,并不适用于所有的客户端。使用现有浏览器技术的另一种替代方法是Comet,但这需要不同类型的服务器进行扩展:http://en.wikipedia.org/wiki/Comet_%28programming%29 – mpeters 2011-01-21 16:05:53

0

你真的尝试过你的第一个方法吗?那会有多少个最大的并发客户端?几十个应该可以由Apache管理。只是猜测。

您是否试过这种低科技的方法"Watching long processes through CGI",或者是您想摆脱在第一个地方?

+0

通常会有大约100-200个用户该系统,但他们可能有大约10个左右的客户端应用程序在多台PC上接收事件。我们宁愿预先考虑高用量,以防止将来出现问题。 – jonathanpeppers 2011-01-25 18:54:05