1

我正在从事一个涉及 websockets 的 web 开发项目。使用 wamp 服务器在本地服务器上一切正常。

在线出现问题,为 websocket 配置了专用服务器(激活了 php 扩展),我可以毫无问题地运行服务器。

然而连接失败,客户端无法连接。这不是端口或防火墙的问题,客户端可以访问服务器但握手未完成。

我使用PHPWebSocket

没有很多关于在 web 服务器上部署 websockets 的文档,它在本地通常工作得很好。

如果有人遇到同样的问题或知道出了什么问题......

4

1 回答 1

0

问题解决了

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 设置为正确的值。

于 2012-06-14T10:57:40.293 回答