我已经基于这个库编写了一个 PHP websockets 服务器:https://github.com/Flynsarmy/PHPWebSocket-Chat
此库作为服务器运行,并处理所有传入请求。当我在本地运行时(连接到地址127.0.0.1:9300
),客户端可以连接,但如果我的客户端不在运行服务器的计算机上,则无法连接。我尝试关闭防火墙;我是否需要授予 PHP 其他权限,以便它能够接收和响应 websocket 通信?
我正在运行 PHP5、Ubuntu Server 12.04 LTS,并连接 Google Chrome(最新版)。
答案1
From line 62 of https://github.com/Flynsarmy/PHPWebSocket-Chat/blob/master/server.php
// 为了便于其他计算机连接,您可能需要将其更改为您的 LAN IP 或外部 IP,或者使用:gethostbyaddr(gethostbyname($_SERVER['SERVER_NAME']))
$服务器->wsStartServer('127.0.0.1', 9300);
将此行更改为,
$Server->wsStartServer('0.0.0.0', 9300);
或将 IP 改为您的 LAN IP 并尝试。
答案2
该文件server.php
包含您问题的答案
// for other computers to connect, you will probably need to change this to your LAN IP or external IP,
// alternatively use: gethostbyaddr(gethostbyname($_SERVER['SERVER_NAME']))
$Server->wsStartServer('127.0.0.1', 9300);
将最后一行更改为服务器的公开 IP 地址可能会解决您的问题。
答案3
只需编辑 server.php ;现在它只监听环回 [ $Server->wsStartServer('127.0.0.1', 9300); ]。将其更改为监听所有 ip [0.0.0.0?] 或至少一个分配给服务器网络接口 [ eth0? ] 的 ip。