connect()
{
if(!this.control.connecting)
{
let server ='http://192.168.1.187:8888/test';
this.control.socket = uni.connectSocket({
url: server,
success:(res)=>{
},
complete:()=>{
this.control.connecting = false;
},
});
this.control.socket.onOpen((res)=>{
this.control.connected = true;
});
this.control.socket.onError((res)=>{
console.log('onSocketError');
this.control.connected = false;
});
this.control.socket.onClose((res)=>{
console.log('onSocketClose');
this.control.connected = false;
});
}
}
![gogogwl](https://img-cdn-tc.dcloud.net.cn/account/identicon/a1c5da56f1e91aba065c2116339badb1.png)
- 发布:2021-06-10 10:40
- 更新:2021-06-11 12:53
- 阅读:712
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: Windows 10
HBuilderX类型: 正式
HBuilderX版本号: 3.1.11
手机系统: iOS
手机系统版本号: IOS 14
手机厂商: 苹果
手机机型: iPad(第5代)
页面类型: vue
打包方式: 离线
项目创建方式: HBuilderX
示例代码:
操作步骤:
使用uni.connectSocket连接内网服务器立刻会触发onError
使用uni.connectSocket连接内网服务器立刻会触发onError
预期结果:
可以连接服务器
可以连接服务器
实际结果:
无法连接服务器
无法连接服务器
bug描述:
APP使用websocket连接到内网的PC,在IOS14以前的系统上没有问题,因为IOS14引入了本地网络权限,APP在使用websocket时不会触发本地网络授权的弹框,导致无法访问本地网络。 但是真机调试和云端打包都没有问题,只有离线打包时无法访问本地网络,是不是离线打包的Demo里缺少某些设置导致的问题? 示例代码如下,socket在连接时会立即触发onError,无法连接成功。
另:已经在离线打包项目的app-info.plist文件中添加了NSLocalNetworkUsageDescription描述,但并没有起作用。
gogogwl (作者)
没试过自定义调试基座,理论上来说应该也没问题,因为自定义调试基座也是云端生成的。
2021-06-11 15:44
gogogwl (作者)
从目前的情况来看应该是离线打包的项目缺少某些东西导致的。
2021-06-11 15:44
DCloud_iOS_WZT
这个只能找找配置了,内网的别人应该也无法测试,试下其他外网地址能请求到么
2021-06-11 15:53
gogogwl (作者)
回复 DCloud_iOS_WZT: 外网请求没有问题,是因为没有本地网络权限导致的,并不需要访问到实际的数据,随便访问一个内网不存在的ip地址都行,正常应该是过几秒连接超时,现在是没有限权瞬间就返回error了
2021-06-16 10:24