HarmonyOS 通过TCPSocket进行连接时,如何准确的判断是否与服务器已断开连接?

使用TCPSocket的getState获取到的连接状态不准确,无法判断服务器主动断开连接的情况。

TCPSocket建立连接之后,在没有任何数据交互的情况下待机长时间,使用getState获取到的isConnected为true,并且使用send发送数据没有触发error,但是实际上服务器已断开和客户端的连接,没有给响应了;

阅读 589
1 个回答

通过订阅回调事件可以获取,尝试使用error事件处理

可参考以下链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-socket-V5\#onerror-1

参考demo如下:

import socket from "@ohos.net.socket";
import { BusinessError } from '@ohos.base';
let tcp: socket.TCPSocket = socket.constructTCPSocketInstance();
tcp.on('error', (err: BusinessError) => {
  console.log("on error, err:" + JSON.stringify(err))
});

使用场景是绑定和连接时,可参考以下链接,有说明:https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-socket-V5\#getstate-2

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进