IOS13.5 safari无法建立websocket连接
这里详细描述问题
使用nignx反向代理配置如何
location /wss{
proxy_pass http://192.168.2.5:8000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header X-Real-IP $remote_addr;
}
workerman运行
----------------------- WORKERMAN -----------------------------
Workerman version:3.5.31 PHP version:7.3.4
------------------------ WORKERS -------------------------------
worker listen processes status
myproject websocket://192.168.2.5:8000 1 [ok]
safari可以访问 https://192.168.2.5/wss
android和PC上没有问题,不使用反向代理safari可以连接
var socket=new WebSocket("wss://192.168.2.5/wss");
socket.onopen=function(){
console.log('opened');
};
socket.onmessage=function(event) {
};
socket.onclose=function (e) {
};
socket.onerror=function (e) {
document.write(JSON.stringify(e));
};
window10 phpstudy
thinkphp5.1
Workerman version:3.5.31 PHP version:7.3.4
文档说发起wss连接时不能用ip,得用ssl证书对应的域名去连。
var socket=new WebSocket("wss://192.168.2.5/wss");
改成
var socket=new WebSocket("wss://域名.com/wss");
试下。
域名必须是证书对应的域名。如果是自签名证书估计够呛,有些浏览器可能不认。
但是手机只能通过ip访问PC的服务器,用域名的话死活访问不了IOS13.5 的HOSTS里面改了也不起作用,有人知道手机如何访问吗?
1、证书是正经从运营商申请的正式证书,并且没有过期
2、证书对应的域名指向了正确的ip
3、连接时使用证书对应的域名,不能用ip
这三点保证了基本就没问题,有问题就就继续参考这三点
在本地开发和调试,使用自签是比较好的选择,我估计是你说的“wss连接时不能用ip” 照成的,因为其他android手机没有问题,我在试试