39

由于围绕 WebSockets 的所有嗡嗡声,很难找到关于如何在 Google 上将它们与 Apache 服务器一起使用的好的演练。

我们正在用 PHP (symfony2) 开发一个插件,它会不时运行一种聊天实例。我们发现在这方面 WebSockets 比 AJAX 更有趣、更标准、更快捷。问题是,我们组中没有太多的系统管理员资源,我们发现很难收集有关以下事项的良好信息:

  • 我们可以在传统的 Apache 专用服务器上运行 WebSocket 实例吗?如果可以,您是否有对我们有用的链接?
  • 如果我们需要修改服务器,你会推荐什么样的工具,因为我们在系统管理员方面不太熟练,所以我们负担不起在这方面的高维护 b***。

非常感谢你,

ps:我们将链接回您的博客/网站,因为我们将在我们的开发博客上发布有关我们应用程序这一部分的技术/信息帖子。

再次感谢你!

4

4 回答 4

17

正如@zaf 所说,您更有可能找到一个独立的 PHP 解决方案——而不是在 Apache 中运行的东西。也就是说有一个apache WebSocket 模块

然而,根本问题是 Apache 在构建时并没有考虑到维护许多持久连接。它与 PHP 一起建立在发出请求并快速发回响应的理念之上。这意味着如果您保持请求处于打开状态并且您将需要非常快速地研究水平扩展,资源可能会很快用完。

我个人认为你有两个选择:

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

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

于 2012-07-05T15:22:42.470 回答
14

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

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

您也可以尝试其他一些项目。

基本上,您需要上传、解包并开始运行该过程。

在前端,您将使用 javascript 连接到特定端口上的服务器。

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

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

尝试在尽可能多的浏览器/设备上进行测试,因为这将决定您选择哪个 websocket 服务器实现。您必须注意新旧协议。

于 2012-07-04T19:19:52.073 回答
6

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

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

请检查此链接

于 2013-07-11T12:59:38.687 回答
-2

另一种途径是使用专用的 websocket 服务器。

在 www.achex.ca试用Achex Websocket Server并查看教程。

或者

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

于 2013-09-24T20:42:55.583 回答