Gateway連上通信10分鐘左右就報1006斷連,使用nginx反向代理wss,看了日志沒有任何報錯信息,就是靜默斷連了,觸發(fā)了onClose。
gateway配置:
// Gateway配置
// 擴(kuò)展自身需要的配置
'protocol' => 'websocket', // 協(xié)議 支持 tcp udp unix http websocket text
'host' => '0.0.0.0', // 監(jiān)聽地址
'port' => 2352, // 監(jiān)聽端口
'socket' => '', // 完整監(jiān)聽地址
'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/; # 轉(zhuǎn)發(fā)到你本地的9501端口 這里要根據(jù)你的業(yè)務(wù)情況填寫 謝謝
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; # 升級協(xié)議頭
proxy_set_header Connection upgrade;
}
看了日志沒有任何報錯信息
php7.2、thinkphp6.0、nginx1.24、workerman3.5.35
心跳就是每次55秒一次,然后就前端收到1006直接斷了。
是的,我也好想遇到類似問題,60秒的心跳檢查,客戶端55秒,過段時間就被服務(wù)器切斷連接,如qqxxr所說把前端心跳間隔縮短,我懷疑定時器可能有點(diǎn)問題(之前也有人提問定時工具時間有問題)應(yīng)該和nginx關(guān)系不大。另外客戶端增加一個斷開重連機(jī)制
服務(wù)端的最好不要60s,設(shè)置成55秒。然后有的路由器啥的,或者運(yùn)營商啥的也會切斷你的網(wǎng)。測這個的話,服務(wù)端55s,客戶端小于55s。先到自己的內(nèi)網(wǎng)測一下,然后也有專業(yè)的測試ws的網(wǎng)站測試你的連接