HarmonyOS 鸿蒙Next MDNS,关于serviceLost的回调接口

发布于 1周前 作者 zlyuanteng 来自 鸿蒙OS

HarmonyOS 鸿蒙Next MDNS,关于serviceLost的回调接口

discoveryService.on('serviceLost', (data: mdns.LocalServiceInfo) => {
  console.log("serviceLost=======", data.host?.address);
  const index = this.deviceList.findIndex(item => item.ip === data.host?.address);
  if (index != -1) {
    this.deviceList.splice(index, 1)
  }
});

问题:当列表中某个设备因为网络原因掉线或者关机等原因,确实会触发到该接口,但是不能打印到该掉线设备的ip,所以有没有方法能够把该消失设备的ip打印出来


更多关于HarmonyOS 鸿蒙Next MDNS,关于serviceLost的回调接口的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复
data.host?.address无法获取吗

更多关于HarmonyOS 鸿蒙Next MDNS,关于serviceLost的回调接口的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


那就是bug
给官方反馈吧
希望官方能看到,

还有个问题不知道是不是bug,就是serviceFound跟serviceLost回调接口不能同时使用,比如目前利用serviceFound接口发现了一个设备,然后把该设备断开,他就不会调用serviceLost接口,反过来也是一样的,

在HarmonyOS鸿蒙系统中,关于Next MDNS(Multicast DNS)的serviceLost回调接口,主要用于处理服务丢失事件。当网络中的某个MDNS服务不可用时,系统会触发该回调接口。

serviceLost回调接口通常包含以下关键信息:

  • 服务实例名称:标识丢失服务的唯一名称。
  • 服务类型:指定服务的类型,例如_http._tcp.local.表示HTTP服务。
  • 域名:服务所在的域名,通常是local.表示本地网络。

在实现serviceLost回调时,开发者需要根据业务逻辑处理服务丢失的情况,例如更新用户界面、尝试重新发现服务或执行其他必要的清理工作。

确保你的MDNS客户端已正确注册并监听服务丢失事件。在回调接口内部,通过参数获取丢失服务的详细信息,并据此执行相应的处理逻辑。

示例代码(伪代码):

void serviceLost(const std::string& serviceName, const std::string& serviceType, const std::string& domain) {
    // 处理服务丢失逻辑
    log("Service lost: " + serviceName + " of type " + serviceType + " in domain " + domain);
    // 更新UI或执行其他操作
}

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部