Gateway连上通信10分钟左右就报1006断连,使用nginx反向代理wss,看了日志没有任何报错信息,就是静默断连了,触发了onClose。
gateway配置:
// Gateway配置
// 扩展自身需要的配置
'protocol' => 'websocket', // 协议 支持 tcp udp unix http websocket text
'host' => '0.0.0.0', // 监听地址
'port' => 2352, // 监听端口
'socket' => '', // 完整监听地址
'context' => [], // socket 上下文选项
'register_deploy' => true, // 是否需要部署register
'businessWorker_deploy' => true, // 是否需要部署businessWorker
'gateway_deploy' => true, // 是否需要部署gateway
// Register配置
'registerAddress' => '127.0.0.1:1236',
'name' => 'thinkphp',
'count' => 10,
'lanIp' => '127.0.0.1',
'startPort' => 2000,
'daemonize' => false,
'pingInterval' => 60,
'pingNotResponseLimit' => 0,
'pingData' => '{"type":"ping"}',
// Nginx配置:
location /chat/ {
proxy_redirect off;
proxy_pass http://0.0.0.0:2352/; # 转发到你本地的9501端口 这里要根据你的业务情况填写 谢谢
proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
proxy_http_version 1.1;
proxy_connect_timeout 65;
proxy_send_timeout 65;
proxy_read_timeout 300;
proxy_ignore_client_abort on;
proxy_buffering off;
proxy_set_header Upgrade $http_upgrade; # 升级协议头
proxy_set_header Connection upgrade;
}
看了日志没有任何报错信息
php7.2、thinkphp6.0、nginx1.24、workerman3.5.35
第二点可以排除,我已经试了不下10次,没有主动断开。
心跳正常嘛?
正常的,55秒一次ping
心跳就是每次55秒一次,然后就前端收到1006直接断了。
客户端的心跳设置短一点,比如30S,服务端的不改
还有浏览器只能停在当前页面,不然一样被kill,这是浏览器的机制。你看下你中途有没有切换走
没有切换走的