解说:使用Socket做聊天的项目,发现平均保持1分钟左右,就会出现连接中断,原因有如下:
一、Nginx代理
nginx.conf里面需配置几个相关参数:
1. proxy_connect_timeout;
2. proxy_read_timeout;
3. proxy_send_timeout;
http {
server {
location / {
root html;
index index.html index.htm;
proxy_pass http://scoket;
proxy_http_version 1.1;
proxy_connect_timeout 3600s; #配置点1
proxy_read_timeout 3600s; #配置点2
proxy_send_timeout 3600s; #配置点3
proxy_set_header Upgrade $http_upgrade; #这是webSocket的配置
proxy_set_header Connection "Upgrade"; #这是webSocket的配置
}
}
}
二、socket设置问题
相关参数:
heartbeat_check_interval
描述:设置心跳检测间隔
说明:此选项表示每隔多久轮循一次,单位为秒。每次检测时遍历所有连接,如果某个连接在间隔时间内没有数据发送,则强制关闭连接(会有onClose回调)。
描述:设置某个连接允许的最大闲置时间。
说明:该参数配合heartbeat_check_interval使用。每次遍历所有连接时,如果某个连接在heartbeat_idle_time时间内没有数据发送,则强制关闭连接。默认设置为heartbeat_check_interval * 2。
示例:
$this->serv->set(array(
'daemonize' => true, 'ssl_cert_file' => 'cert/214422575910292.crt', 'ssl_key_file' => 'cert/214422575910292.key', 'heartbeat_check_interval' => '3600', 'heartbeat_idle_time' => '3600' ));