HarmonyOS鸿蒙NEXT应用开发WebSocket(api 9)连接成功后触发Error事件,错误码200

HarmonyOS鸿蒙NEXT应用开发WebSocket(api 9)连接成功后触发Error事件,错误码200

WebSocket(api 9)连接成功之后,会主动触发 Error事件 断开连接 并返回 {“code”:200} 错误码,请问如何解决?

3 回复

该问题一般是由于未及时与服务端完成握手动作导致的运行超时。在open阶段补充send来完成与服务端的握手过程,达成协议的建立,实现如下:

ws.on('open', (err: BusinessError, value: Object) => {
  console.log("on open, status:" + JSON.stringify(value));
  // 当收到on('open')事件时,可以通过send()方法与服务器进行通信
  ws.send("Hello, server!", (err: BusinessError, value: boolean) => {
    if (!err) {
      console.log("Message send successfully");
    } else {
      console.error("Failed to send the message. Err:" + JSON.stringify(err));
    }
  });
});

更多关于HarmonyOS鸿蒙NEXT应用开发WebSocket(api 9)连接成功后触发Error事件,错误码200的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


鸿蒙NEXT中WebSocket连接成功后触发Error事件且错误码200,通常表示连接已正常关闭。在API 9中,WebSocket的onError回调会被触发,错误码200对应正常关闭状态(类似HTTP 200 OK)。这是WebSocket协议的标准行为,表示服务端主动关闭连接或客户端调用close()方法。

无需特殊处理这种正常关闭情况。若需区分错误类型,可在onError回调中检查err.code:200为正常关闭,非200为异常断开。连接生命周期应通过onOpen/onMessage/onClose回调管理。

针对HarmonyOS NEXT中WebSocket连接成功后触发Error事件(错误码200)的问题,这通常是连接建立后被服务器主动断开的表现。以下是可能原因和解决方案:

  1. 服务器端问题:
  • 服务器可能设置了自动断开空闲连接
  • 服务器可能检测到异常协议头
  • 建议检查服务器日志确认断开原因
  1. 客户端处理建议:
  • 检查WebSocket连接URL是否正确(ws://或wss://)
  • 确认请求头是否符合服务器要求
  • 添加心跳机制保持连接活跃
  1. 代码示例(处理重连):
let ws = new WebSocket('ws://yourserver');
ws.onerror = (e) => {
  if(e.code === 200){
    // 延迟重连
    setTimeout(() => connect(), 3000); 
  }
}
  1. 其他注意事项:
  • 确保网络权限已配置
  • 检查是否使用了代理导致连接异常
  • 测试不同网络环境下的表现

错误码200通常表示连接被正常关闭,但如果在刚建立时就出现,需要重点排查服务器配置。

回到顶部