uni-app 鸿蒙模拟器连接上了connectSocket后十几秒就走onSocketError自动断开 SDK版本1.3.7

发布于 1周前 作者 sinazl 来自 Uni-App

uni-app 鸿蒙模拟器连接上了connectSocket后十几秒就走onSocketError自动断开 SDK版本1.3.7

开发环境 版本号 项目创建方式
Windows win10专业版 HBuilderX
### 操作步骤:

uni.onSocketError(res => {
console.log('WebSocket连接打开失败!', JSON.stringify(res))
})

预期结果:

不要自动断开,正常使用


### 实际结果:

自动断开

bug描述:

鸿蒙模拟器连接上了connectSocket后十几秒就走onSocketError自动断开。


![图像](https://aliru01.oss-cn-hangzhou.aliyuncs.com/img/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20240911151614.png)
![图像](https://aliru01.oss-cn-hangzhou.aliyuncs.com/img/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20240911151809.png)
![图像](https://aliru01.oss-cn-hangzhou.aliyuncs.com/img/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20240911151812.png)

更多关于uni-app 鸿蒙模拟器连接上了connectSocket后十几秒就走onSocketError自动断开 SDK版本1.3.7的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app 鸿蒙模拟器连接上了connectSocket后十几秒就走onSocketError自动断开 SDK版本1.3.7的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在处理uni-app在鸿蒙模拟器上通过connectSocket连接后自动断开的问题时,首先需要确保你的网络连接、服务器配置以及SDK版本都正确无误。由于你提到使用的是SDK版本1.3.7,并且连接后十几秒就走onSocketError自动断开,这可能是由于多种原因引起的,比如网络不稳定、服务器超时设置、或者客户端心跳包未发送等。

以下是一个基本的uni-app使用WebSocket的示例代码,虽然你提到的是Socket(TCP),但逻辑上处理错误和连接保持的方式有相通之处。由于uni-app官方文档和社区可能还没有针对鸿蒙模拟器特定问题的详细解决方案,这里提供一个通用的TCP Socket连接示例,并讨论可能的错误处理策略。

TCP Socket连接示例

// 引入uni-app的网络模块
const tcp = uni.createTCPSocket({
    type: 'tcp',
    host: 'your.server.ip', // 服务器IP地址
    port: 12345, // 服务器端口号
    success: function (res) {
        console.log('Socket连接成功', res);
        // 连接成功后,可以开始发送或接收数据
        tcp.send({
            data: 'Hello Server',
            success: function () {
                console.log('数据发送成功');
            }
        });
    },
    fail: function (err) {
        console.error('Socket连接失败', err);
    }
});

// 监听错误事件
tcp.onError(function (err) {
    console.error('Socket错误', err);
    // 错误处理,可以尝试重连逻辑
});

// 监听关闭事件
tcp.onClose(function () {
    console.log('Socket已关闭');
    // 关闭处理,比如提示用户或尝试重连
});

// 监听接收数据事件
tcp.onMessage(function (message) {
    console.log('收到服务器消息', message.data);
});

错误处理策略

  1. 心跳包机制:实现客户端向服务器定期发送心跳包,以保持连接活跃。
  2. 重连逻辑:在onErroronClose事件中实现自动重连逻辑。
  3. 日志记录:详细记录错误信息和时间,帮助分析问题根源。
  4. 服务器配置:检查服务器端的超时设置、防火墙规则等,确保服务器能够正确处理长时间空闲的连接。

由于具体问题的根源可能涉及网络环境、服务器配置或SDK本身的bug,如果上述代码和策略无法解决问题,建议查阅uni-app和鸿蒙系统的官方文档或社区论坛,看是否有其他开发者遇到并解决了类似问题。同时,考虑升级到最新版本的SDK,以获取可能的修复和改进。

回到顶部