GatewayWorker websocket 连接 1 分钟后自动断开原因?

1、GatewayWorker websocket 连接 1 分钟后自动断开

GatewayWorker 配置通过nginx转发,客户端定时(每60秒)发送心跳,

心跳间隔设置如下:

// 心跳间隔
$gateway->pingInterval = 30;
$gateway->pingNotResponseLimit = 6;
// 心跳数据
$gateway->pingData = '';

但在测试中发现,连接后1分钟自动断开。心跳正常,之后发现是nginx自动将连接断开了。

Nginx 有个参数:proxy_read_timeout , 默认60秒,表示连接成功后等候后端服务器响应时间,若在该时间端内没有交互nginx会自动断开连接。因为心跳间隔也是60秒所以就自动断开了,应将客户端心跳间隔调小或修改nginx配置(推荐):

nginx 应添加如下配置:

location / {
        ...
        proxy_read_timeout 300;  # 秒
        ...
}