小程序websocket连接nginx配置记录

小程序websocket连接记录

  • Gateway后台不配证书
  • 配置Nginx
  • 网页里测试连接

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:没端口号会报错,连接不上

你可能感兴趣的:(android,socket)