Php WebSocket在线部署

Php WebSocket在线部署,php,html,websocket,Php,Html,Websocket,我正在从事一个涉及WebSocket的web开发项目。 使用wamp服务器,在本地服务器上一切正常 在线出现问题,专用服务器为websocket进行了良好配置(php扩展已激活),我可以毫无问题地运行服务器 然而,连接失败,客户端无法连接。这不是端口或防火墙的问题,客户端可以访问服务器,但握手未完成 我使用: 关于websockets在web服务器上的部署没有太多文档,它在本地环境下通常工作良好 如果有人遇到了同样的问题或知道出了什么问题……问题解决了 PHPwebsocket使用ID来区分客户

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

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

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

我使用:

关于websockets在web服务器上的部署没有太多文档,它在本地环境下通常工作良好


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

问题解决了

PHPwebsocket使用ID来区分客户端和关联的套接字

因此,在$this->read上,我们有一些夫妇:

clientID=>sockets

问题是,函数socket_select不关心id。因此,根据实现

本地(Windows)

输入:

{
0 => ressource #5,
1 => ressource #6
}
{
0 => ressource #5,
1 => ressource #6
}
输出:

{
**1** => ressource #6
}
{
**0** => ressource #6
}
在线(Debian)

输入:

{
0 => ressource #5,
1 => ressource #6
}
{
0 => ressource #5,
1 => ressource #6
}
输出:

{
**1** => ressource #6
}
{
**0** => ressource #6
}
在第二种情况下,关系不再保持,这会在流程的其余部分造成问题

为了解决这个问题,我向重新定义的id添加了一个循环:

foreach($this->wsRead as $id => $socket2){
    if($socket2 ==$socket)
    $clientID = $id;
    }

将循环$clientID设置为正确的值后。

您确定没有防火墙或路由吗?某些代理(如mod_proxy)可以中断websocket通信。防火墙是否应该直接阻止连接?如果它不知道如何处理此特定情况,并且对http做出错误(过时)的假设,则可能无法正确传输。我确信有些代理不兼容,我不知道防火墙是否兼容,但这是可能的。如何确保这不是防火墙问题?对于proxy?对于防火墙,如果怀疑客户端存在问题,请从另一个点进行测试。关于服务器防火墙和代理,您不知道您正在使用哪些吗?