前端使用插件市场的socket.io插件,
连接地址为亚马逊申请的域名(非中国区),无端口(使用默认的443,该端口只用于websocket连接,其他地方没有再使用),
连接方式为WSS,证书齐全,
现在很奇怪的是H5端连接正常,连真机运行需要打开调试模式才能连接,不然就是不停的“超时”=》“重连”,
看了很多文章,有的说是不开调试模式域名需要校验,校验是检查哪些内容?(连接地址不能带端口和域名需要备案么)
有没有哪位大佬熟悉这个模块的,还请指点指点小弟,万分感谢!搞了一天,心态炸了。。。。。
(目前连接的域名是亚马逊新加坡地区的,没有使用nginx代理)
chubby
- 发布:2020-02-25 21:34
- 更新:2020-09-07 15:35
- 阅读:2338
websocket连接真机不打开调试服务无法成功连接,H5连接正常
分类:uni-app
3 个回复
chubby (作者)
从亚马逊负载均衡器的日志来看,打包成APP后websocket连接请求的目标地址的端口变了,原先websocket使用的连接类型是wss,目标端口是默认的443,结果打包后请求里连接的端口变成80了,直接负载均衡器转发的目标组就错了,这是什么鬼!!心态炸了。。。。,
socke.io的版本不匹配?(客户端2.1.2,服务器升级到2.3.0,原先是1.4.5),这也不太可能会导致解析出错吧,不懂!
APP强制使用80端口?这个真不懂。。。。。
哪位大佬了解这一块的,指点指点小弟。。。。。。感激不尽!
chubby (作者)
已经解决了。。。,问题出在Android APP上未识别XMLHttpRequest和WebSocket(不清楚是不是什么地方的库没引用到),
解决办法:
1, const options = {transports: ['websocket']}
this.socketio = ioClient('wss://*.***.com', options);
(握手直接使用websocket协议)
2,修改socket.io中websocket实现模块,使用uniapp内置的websocket建立连接和数据处理
也可以用我改的库 https://github.com/lp476793590/socket.io-client-uni-app
tomJerry - APP,小程序开发
我也遇到这种情况!uni-app自带的websocket出现类似情况!是不是使用插件socket.io能实现?怎么弄