HarmonyOS 鸿蒙Next中关于webSocket建立链接时返回的错误信息(wsi is nullptr, can not trigger)

HarmonyOS 鸿蒙Next中关于webSocket建立链接时返回的错误信息(wsi is nullptr, can not trigger)

如何优化 WebSocket 长连接在弱网环境下的重连效率与心跳机制?-华为开发者问答 | 华为开发者联盟

根据这个链接提供的方法建立链接(代码是完全一样的,就注释掉了部分暂时不需要的业务代码),返回了下面这个错误

[websocket_exec.cpp:199] wsi is nullptr, can not trigger

这是本地其中的一段日志,on能够监听到建立链接和发送信息的状态变化

服务器那边能看到我这边的状态变化,但是看不到我发的数据信息,只能看到open、close的状态

确定给的url是正确的,并且有测试过服务器是否能链接通,也是没问题的,查不到有关这个报错的处理方法,实在是不知道该怎么处理了


更多关于HarmonyOS 鸿蒙Next中关于webSocket建立链接时返回的错误信息(wsi is nullptr, can not trigger)的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在鸿蒙Next中,wsi is nullptr错误表明WebSocket连接尝试未成功创建有效连接对象。通常由于WebSocket初始化失败导致,可能原因包括:

  1. 网络权限未配置;
  2. URL格式或协议错误;
  3. WebSocket模块未正确初始化。

检查manifest.json中是否声明ohos.permission.INTERNET权限,并确认URL以ws://wss://开头。该错误属于底层libwebsockets库的null对象引用异常,需确保创建连接前完成所有依赖资源的加载。

更多关于HarmonyOS 鸿蒙Next中关于webSocket建立链接时返回的错误信息(wsi is nullptr, can not trigger)的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


这个错误表明WebSocket连接对象(wsi)在触发事件时为nullptr,通常由以下几种情况导致:

  1. 连接未正确初始化:
  • 确保WebSocket.createWebSocket()调用成功
  • 检查url格式是否正确(ws://或wss://开头)
  1. 时序问题:
  • 可能在连接尚未建立完成时就尝试发送数据
  • 建议在on(‘open’)回调触发后再发送数据
  1. 资源释放问题:
  • 检查是否在连接过程中意外调用了close()
  • 确保WebSocket对象生命周期管理正确

建议调试步骤:

  1. 先简化代码,仅保留基本连接逻辑
  2. 添加完整的错误回调处理
  3. 检查网络权限配置(ohos.permission.INTERNET)
  4. 使用抓包工具确认实际网络请求

典型修正方案:

let ws = webSocket.createWebSocket();
ws.on('open', (err, value) => {
    if (!err) {
        // 连接成功后再发送数据
        ws.send(...);
    }
});
ws.on('message', ...);
ws.connect(url);  // 确保这是最后一步调用

注意Next版本中WebSocket实现可能与API 9+有差异,建议检查具体版本文档。

回到顶部