Gateway连上通信10分钟左右就报1006断连,使用nginx反向代理wss。

zhoumo

问题描述

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;
    }

报错信息

看了日志没有任何报错信息

截图报错信息里报错文件相关代码

截图

操作系统及workerman/webman等框架组件具体版本

php7.2、thinkphp6.0、nginx1.24、workerman3.5.35

172 2 0
2个回答

小W

1.估计是业务逻辑代码导致的,消息发送太快导致消息积压,心跳消息还没处理就断开了。

2.也有可能是浏览器(客户端关闭了,具体原因需要查看客户端)

  • zhoumo 1天前

    第二点可以排除,我已经试了不下10次,没有主动断开。

  • SillyDog 1天前

    心跳正常嘛?

  • zhoumo 1天前

    正常的,55秒一次ping

zhoumo

心跳就是每次55秒一次,然后就前端收到1006直接断了。

  • qqxxr 9小时前

    客户端的心跳设置短一点,比如30S,服务端的不改

  • qqxxr 9小时前

    还有浏览器只能停在当前页面,不然一样被kill,这是浏览器的机制。你看下你中途有没有切换走

  • zhoumo 8小时前

    没有切换走的

🔝