我正在从事一个涉及 websockets 的 web 开发项目。使用 wamp 服务器在本地服务器上一切正常。
在线出现问题,为 websocket 配置了专用服务器(激活了 php 扩展),我可以毫无问题地运行服务器。
然而连接失败,客户端无法连接。这不是端口或防火墙的问题,客户端可以访问服务器但握手未完成。
我使用PHPWebSocket:
没有很多关于在 web 服务器上部署 websockets 的文档,它在本地通常工作得很好。
如果有人遇到同样的问题或知道出了什么问题......
我正在从事一个涉及 websockets 的 web 开发项目。使用 wamp 服务器在本地服务器上一切正常。
在线出现问题,为 websocket 配置了专用服务器(激活了 php 扩展),我可以毫无问题地运行服务器。
然而连接失败,客户端无法连接。这不是端口或防火墙的问题,客户端可以访问服务器但握手未完成。
我使用PHPWebSocket:
没有很多关于在 web 服务器上部署 websockets 的文档,它在本地通常工作得很好。
如果有人遇到同样的问题或知道出了什么问题......
问题解决了
PHPwebsocket 使用 ID 来区分客户端和关联的套接字。
所以,在 $this->read 上,我们有一些情侣:
clientID => 套接字
问题就在那里,函数socket_select不关心id。因此,取决于实施...
在本地 (Windows)
输入 :
{
0 => ressource #5,
1 => ressource #6
}
输出 :
{
**1** => ressource #6
}
在线(Debian)
输入 :
{
0 => ressource #5,
1 => ressource #6
}
输出 :
{
**0** => ressource #6
}
这种关系在第二种情况下不再保持,这会导致其余过程出现问题。
为了解决这个问题,我添加了一个循环来重新定义 id :
foreach($this->wsRead as $id => $socket2){
if($socket2 ==$socket)
$clientID = $id;
}
循环后 $clientID 设置为正确的值。