在Apache服务器上使用WebSocket

39

在WebSockets引起热议的时候,很难在Google上找到一个好的解释如何在Apache服务器上使用它们的指南。

我们正在开发一个插件,使用PHP(Symfony2),它将不时地运行聊天实例。我们发现WebSockets比AJAX更有趣、标准和快速。问题是,我们的团队缺乏系统管理员资源,并且很难收集以下事项的有用信息:

  • 我们能否在传统的Apache专用服务器上运行WebSocket实例?如果可以,您是否有相关链接?
  • 如果我们需要修改服务器,您会推荐哪些工具?请注意,我们在系统管理方面的技能不太高,因此我们不能承担高维护成本。

非常感谢!

附言:我们将在我们的开发博客上发布有关该应用程序部分的技术/信息文章,并链接回您的博客/网站。

再次感谢!


你也可以尝试使用ApacheWS - Iharob Al Asimi
4个回答

17

正如@zaf所说,您更有可能找到一个独立的PHP解决方案,而不是在Apache中运行的解决方案。话虽如此,还是有一个Apache WebSocket模块可用。

然而,根本问题是Apache并没有考虑维护许多持久连接的情况。它和PHP一样,都建立在请求被发出并快速返回响应的思想上。这意味着如果你保持请求处于打开状态,资源会很快被用尽,你需要尽快研究水平扩展。

个人认为您有两个选择:

  1. 使用替代的实时Web技术解决方案,并使用队列或短暂的请求(Web服务)在Web应用程序和实时Web基础架构之间通信。
  2. 将持久连接的处理和实时Web基础架构的扩展转移到实时Web托管服务。我在Pusher工作,我们属于这个类别。

对于自托管和托管选项,您可以查看我的实时Web技术指南


非常有趣的东西 :) 非常感谢!我喜欢你的指南,尽管它并没有帮助我们区分解决方案。我们会查看文档的 ;) 再次感谢! - Edouard Reinach
我确实需要找时间尝试所有技术,并提供有关不同选项的优缺点的指导。目前只是一个可点击的列表 - 你自己调查的起点。 - leggetter

14

一种方法是使用独立安装的Web Socket服务器。

对于PHP,您可以尝试: http://code.google.com/p/phpwebsocket/http://github.com/Devristo/phpws/

还有一些其他项目可供尝试。

基本上,您需要上传、解压缩并开始运行进程。

在前端,你需要用Javascript连接到特定端口上的服务器。

大多数Web Socket服务器都有一个演示程序,它会回显它所听到的任何内容,因此这是编写一些测试代码的好地方。您甚至可能会发现一个基本的聊天实现。

棘手的部分是监视Web Socket服务器,并确保它平稳、持续地运行。

尽可能在多个浏览器/设备上进行测试,因为这将决定你选择哪种WebSocket服务器实现。您需要注意旧协议和新协议。


非常感谢。你有没有想到任何监控工具?祝你玩得愉快! - Edouard Reinach
我们有自己的轻量级监控工具。首先是一个简单的cron脚本,用来检查进程是否运行,并在不运行时重新启动。你可以从这个开始构建,或者搜索现成的进程监控应用程序。 - zaf
好的,我相信我们的开发团队一定能做到!再次感谢! - Edouard Reinach

6
我介绍了另一个WebSocket服务器:PHP Ratchet (Github)。这是客户端和服务器端代码以及浏览器支持的更好、更完整的列表。请查看此链接

谢谢,但是为什么它更好呢? - Ben
因为它快速、简便且是 React 的子集(http://reactphp.org)。它有良好的文档和支持。 - ShahRokh
2
我们可以看一下任何测试吗? - Tebe

-2

另一种方法是使用专用的WebSocket服务器。

尝试使用Achex WebSocket服务器,请访问www.achex.ca并查看教程。

或者

如果您真的想要使用Apache,请查看Apache Camel。(但您需要设置它,而且它比Achex服务器更复杂)请参阅http://camel.apache.org/websocket.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接