在Apache服务器上使用WebSocket

围绕WebSockets的所有讨论,很难find一个关于如何在Google上使用Apache服务器的良好演练。

我们正在开发一个插件,在PHP(symfony2),它会不时运行一种聊天实例。 而且我们发现WebSockets比AJAX更有趣,标准和快捷。 问题是,我们集团没有太多的系统pipe理资源,我们很难收集关于以下事项的好消息:

  • 我们可以在传统的Apache专用服务器上运行WebSocket实例吗?如果是的话,您有没有对我们有用的链接?
  • 如果我们需要对服务器进行修改,那么在知道我们对系统pipe理员不太熟练的情况下,你会推荐什么样的工具,所以我们不能在这方面有很高的维护费用。

非常感谢你,

ps:我们将链接到您的博客/网站,因为我们将在我们的应用程序的这部分devblog上发表技术/信息。

再次感谢你!

一种途径是使用独立安装的networking套接字服务器。

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

还有一些其他的项目你可以试试。

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

在前端,你将有JavaScript连接到特定端口上的服务器。

大多数websocket服务器都有一个演示,可以回应任何声音,所以这是编写一些testing代码的好地方。 你甚至可以find一个基本的聊天实现。

棘手的部分是监视networking套接字服务器,并确保它运行平稳和连续。

尝试在尽可能多的浏览器/设备上testing,因为这将决定您select哪个websocket服务器实现。 有新老协议,你必须注意。

作为@zaf状态,你更可能find一个独立的PHP解决scheme – 而不是在Apache中运行的东西。 这就是说有一个Apache WebSocket模块 。

但是,最根本的问题在于,Apache并没有build立在维护许多永久连接的基础上。 它和PHP一起build立在请求被创build并且响应被迅速发回的想法上。 这意味着,如果您打开请求,并且需要快速查看水平缩放,则可能会很快耗尽资源。

我个人认为你有两个select:

  1. 使用其他实时Web技术解决scheme,并使用队列或短期请求(Web服务)在Web应用程序和实时Web基础架构之间进行通信。
  2. 卸载持续连接的处理,并将实时Web基础架构扩展为实时Web托pipe服务。 我为Pusher工作,我们属于这个类别。

对于自主托pipe的选项,您可以查看我的实时networking技术指南 。

我介绍了另一个websocket服务器:PHP 棘轮 ( Github )。

这是更好和完整的客户端和服务器端代码和浏览器支持列表。

请检查这个链接 。

另一个path是使用专用的websocket服务器。

试试http://www.achex.ca上的Achex Websocket服务器查看教程。

要么

如果你真的想要Apache,请查看Apache Camel 。 (但你必须设置它,比achex服务器更复杂一点) http://camel.apache.org/websocket.html