2014-05-05 122 views
1

运行WebSocket PHP server是否需要额外的(Apache,PHP,防火墙等)配置?我们是否需要通过ws协议明确请求?如果是这样,该怎么办?WebSocket PHP服务器配置

我有Linux虚拟服务器与ISPConfig 3. PHP脚本正在运行,但客户端得不到服务器响应。

+0

您正在使用哪些PHP代码?当我做到了,我不需要额外的配置。 –

+0

来自https://github.com/morozovsk/websocket –

+0

的'Chat'示例当您运行命令“php index.php start”时,您是否收到消息?或者你的命令行暂停? –

回答

1

对于我来说,我必须做到以下几点。

使用git克隆存储库。

编辑WebsocketDaemon.php,使第12行的代码为$this->pid = getmypid();

确保php可执行文件位于PATH中。

在cmd中导航到websocket\samples\chat\server(必须从存储库移到您的网络服务器)并运行命令php index.php start,这会导致您的cmd暂停。

启动您的网络服务器(任何端口,但8000,因为这是您的网络套接字服务器运行的端口)。

在任何支持Web套接字的浏览器中打开两个网页,其中包含以下链接http://localhost/websocket/samples/chat/client/

输入一条消息,它应该工作(假设网页说你最初连接)。

一句警告。我试图使用PHP套接字服务器来制作游戏,但我遇到了内存问题。这里有一篇关于它的帖子PHP Out of Memory Exception

+0

我已经完成了所有步骤,除了“启动web服务器”(Apache已经运行)。经过漫长的等待,客户端关闭与1006代码的连接(“异常关闭”)。 –

+0

感谢您提供有关内存不足异常的警告。已通知。 :) –

1

首先检查确保端口(它看起来像8000)在防火墙中打开。在ISPConfig默认防火墙只具有以下端口打开:

TCP:20,21,22,25,53,80,110,143,443,993,995,3306,8080,8081,10000

UDP:53

你可以通过登录并进入ISPConfig控制面板中的System来看到这一点。然后在系统类别下的左侧菜单中找到防火墙。它应该显示你的防火墙规则。

2

首先,websockets是完全不同于HTTP的协议,所以依靠Apache是​​不必要的。您可能仍然使用Apache,因此您可以将Web浏览器指向某处,但从根本上说,当您的Javascript客户端代码连接到您的websocket服务器时,您的websocket服务器不应该通过Apache运行。

如果您确实必须将PHP用于websocket服务器,我建议您在命令行上运行PHP并使其无限期地在后台运行。这很重要,因为实现websocket服务器的代码不应该终止。您的websocket代码将监听您选择的端口号。就我个人而言,我使用9000+端口,但是选择取决于您。

我认为至关重要的是要注意,您为websocket实现选择的语言可能与您用于处理HTTP请求的语言完全不同。就个人而言,我使用PHP进行HTTP请求,但是我的websocket服务器(提供实时视频游戏)完全是用C++编写的。连接到websocket服务器的实际客户端代码是用Javascript编写的。

由于各种原因,我认为你应该为websocket服务器选择C++或Java,主要是因为这些语言中存在良好的支持库,并且如果需要,您将可以使用强大的多线程功能。如果你想要这些语言的websocket服务器实现的建议,你可以问我,我会提到一些工作。最后,我想补充一点,当我决定编写一个基于websocket的服务器时,我首先研究了在PHP中实现它的可能性,但很快就决定了C++会更好地满足我的需求。希望你也可以切换到C++或Java(或者Ruby)。