|
|
发表于
2026-5-16 11:50:46
|
显示全部楼层
来自 浙江
看你描述应该是这样的架构:
APP (本地服务127.0.0.1:8080) ←─ws─→ 网页 (Cocos)
↓ 网页其他资源 / 业务请求
远程服务器 47.114.112.149
============================
【问题分析】
============================
"别人能进 你进不去 + ws无限重连"
99%是浏览器侧的问题, 不是APP侧的
ws://127.0.0.1:8080 连不上的常见原因:
============================
【1. 浏览器 Mixed Content 拦截】★最常见
============================
如果你用 https:// 打开的网页 (浏览器自动给加https或重定向),
浏览器会拒绝从 https 页面发起 ws:// 明文连接 (Mixed Content)
解决:
- 强制用 http://47.114.112.149/ 访问 (不带s)
- 或浏览器地址栏点小锁→网站设置→不安全内容→允许
============================
【2. APP本地服务还没起来】
============================
APP要先开 → 后台 / 分屏运行 → 再打开网页
顺序反了 ws会找不到端口
验证方法:
另开浏览器访问 http://127.0.0.1:8080/
有响应或404页面 → 服务在跑
ERR_CONNECTION_REFUSED → 服务没起
============================
【3. 浏览器和APP不在同一进程空间】
============================
"127.0.0.1" 是APP自己的localhost
如果你用 PC浏览器 / 别的设备浏览器 访问, 那个127.0.0.1是PC自己的不是手机的
ws怎么也连不上APP
必须:
- 手机自带浏览器/Chrome/Edge 访问网页
- APP和浏览器在同一台手机
- 推荐用支持WebView调试的浏览器 (Edge / Chrome)
============================
【4. 系统/小米/华为后台限制】
============================
某些机型后台对APP开本地端口有限制
APP切到后台 0.0.0.0:8080 服务被冻结
解决:
- 把APP固定到分屏前台 (你已经做了)
- 关闭这个APP的"省电策略"/"后台冻结"
- 设置→应用管理→该APP→电池→无限制
============================
【5. 8080端口被别的APP占了】
============================
adb shell ss -tlnp | grep 8080
看占8080的PID是不是你那个游戏APP的
如果是别的APP (例如某个开发工具) 抢了端口
APP就监听不上, 改不了端口的话只能干掉抢端口的进程
============================
【最快诊断步骤】
============================
1. 手机Chrome地址栏输入: http://127.0.0.1:8080
有响应 → APP服务正常, 看下面第3步
连接被拒绝 → APP没启动/被冻结/端口被抢
2. Chrome devtools远程调试 (USB连电脑):
chrome://inspect 看WebView里的Console报错
会直接告诉你 "Mixed Content blocked" 或别的具体错误
3. 抓包看 ws 握手:
用 Reqable / HttpCanary VPN模式
过滤 ws:// 看握手时到底走没走出来
- 完全没ws请求 → 网页JS被挡了 (Mixed Content)
- 有请求但101 Upgrade 失败 → APP拒绝连接
- 101成功但马上断 → 协议握手APP不认 (二进制协议有版本)
============================
【最大概率】
============================
试试 这两个:
1. 用Chrome强制 http:// 访问 不要https
2. 用Edge的开发者工具 chrome://inspect 看Console具体报错
把Console报错截图发上来 一眼就能看出问题在哪
加油 (•̀ᴗ•́)و |
|