运行WebSocket PHP server
需要额外的(Apache, PHP,防火墙等)配置吗?我们需要允许通过ws
协议显式请求吗?如果有,该怎么做?
我有Linux虚拟服务器与ISPConfig 3。PHP脚本正在运行,但是客户端没有得到服务器的响应
为了让它为我工作,我必须做以下操作:
使用git克隆仓库
编辑WebsocketDaemon.php,使第12行具有以下代码$this->pid = getmypid();
.
确保php可执行文件在你的PATH中。
在cmd中导航到websocketsampleschatserver
(必须从存储库移动到您的web服务器)并运行命令php index.php start
,这将导致cmd暂停。
启动你的web服务器(任何端口,除了8000,因为这是你的web套接字服务器运行的端口)
在任何支持web套接字的浏览器中打开两个链接http://localhost/websocket/samples/chat/client/
的网页。
输入一个消息,它应该工作(假设网页说你最初连接)。
一个警告。我试图使用PHP套接字服务器来制作游戏,但我有内存问题。
首先要检查的是确保端口(看起来像8000)在防火墙中打开。在ISPConfig中,默认情况下防火墙只打开以下端口:
TCP: 20、21、22、25日,53岁,80110143443993995年,3306年,8080年,8081年,10000年
UDP: 53
你可以通过登录并进入ISPConfig控制面板中的System来看到这一点。然后在左侧菜单的系统类别下查找防火墙。然后它会显示您的防火墙规则。
首先,websockets是一个完全不同于HTTP的协议,所以依赖Apache是不必要的。您可能仍然使用Apache,以便您可以将web浏览器指向某个地方,但从根本上说,当Javascript客户端代码连接到websocket服务器时,websocket服务器不应该通过Apache运行。
如果你真的必须在websocket服务器上使用PHP,我建议你在命令行上运行PHP,让它在后台无限期地运行。这一点很重要,因为实现websocket服务器的代码永远不会终止。您的websocket代码将监听您选择的端口号。就我个人而言,我使用9000+端口,但选择取决于您。
我认为重要的是要注意,你为websocket实现选择的语言可能与你用来处理HTTP请求的语言完全不同。就我个人而言,我使用PHP处理HTTP请求,但我的websocket服务器(提供实时视频游戏)完全是用c++编写的。连接到websocket服务器的实际客户端代码是用Javascript编写的。
出于各种原因,我认为你应该选择c++或Java作为你的websocket服务器,主要是因为这些语言中存在很好的支持库,如果需要的话,你可以访问强大的多线程功能。如果你想要这些语言的websocket服务器实现的建议,你可以问我,我会提到一些工作。
最后,我想补充一点,当我决定写一个基于websocket的服务器时,我首先调查了用PHP实现它的可能性,但很快就决定c++更适合我的需要。希望你也能切换到c++或Java(或者可能是Ruby)。