小程序websocket连接记录
Gateway后台不配证书
正常流程是在Gateway里设置wss(请参考手册)
但这样配置后会和nginx里冲突,造成小程序里android手机好使,ios连不上socket
配置Nginx
upstream websocket{
server 域名:8080;
}
upstream web{
server 域名:8080;
}
server{
listen 443;
server_name 域名;
ssl on;
ssl_certificate 证书地址;
ssl_certificate_key 证书地址;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:50m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 SSLv2 SSLv3;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
location /wss {
proxy_pass http://websocket/; //关键部分 这里配置upstream的名字
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 60s;#默认为60s
proxy_send_timeout 60s;#默认为60s
break;
}
...
}
}
网页里测试连接
var ws = new WebSocket('wss://域名/wss'); //这里要加/wss
ws.onopen = function(){
console.log(111)
};
ws.onerror = function(event){
console.log(222)
}
ws.onclose = function(event){
console.log(event)
}
如何没报错就可以设置小程序了
小程序socket域名配置可以不用加/wss 和端口号,如
wss://baidu.com
这样就解决小程序连socket时
android :socket域名加端口可以连接,但ios不可以加端口号
ios:没端口号会报错,连接不上