收藏
回答

小程序局域网设备发现(mDNS/SSDP/UDP/TCP)在真机长期无回包,咨询能力边界与后续开放?

问题描述

一、使用背景

我们在做一个微信小程序的“局域网设备发现与添加”功能(最初是打印机,现扩展为局域网设备)。

目标是:在手机与设备处于同一 Wi-Fi/同网段时,发现可用设备并完成添加。

当前已实现并真机验证以下能力:

  • wx.startLocalServiceDiscovery / wx.onLocalServiceFound(mDNS)
  • wx.createUDPSocket + bind + send + onMessage(SSDP 探测)
  • wx.createTCPSocket(端口探测)
  • wx.getLocalIPAddress(本机 IP)
  • 页面内有深度扫描(同网段 1-254 + 常见端口)

二、现象与问题

在真机上反复测试时,常见现象为:

  1. SSDP 日志持续显示 sending probe,但几乎无 onMessage 回包;
  2. mDNS 回调命中率很低,且有时出现空 serviceName 的解析失败回调;
  3. 同网段条件已满足(本机有局域网 IP),但设备发现结果仍为空或极少;
  4. 其他第三方 App 在同网络环境下可发现并添加局域网设备(如打印机)。

我们理解“小程序支持局域网通信”,但实际发现层成功率明显受限,无法判断是:

  • 平台能力边界;
  • 某些系统/机型限制;
  • API 使用姿势问题;
  • 或微信容器对组播/广播场景有额外限制。

三、复现信息

  • 平台:微信小程序真机 鸿蒙6.0
  • 基础库版本:[请填写]
  • 微信版本:[请填写]
  • 机型:[purx]
  • 网络:同一 Wi-Fi(非蜂窝),本机 IP:[请填写]
  • 关键日志特征:ssdp sending probe: ... 持续输出
  • ssdp raw packet 很少/无
  • onLocalServiceFound 很少/无
  • 偶发 onLocalServiceResolveFail(空 serviceName)

四、希望官方解答的问题

  1. 小程序在“局域网设备发现”上的官方能力边界具体是什么?
  • 是否保证 mDNS/SSDP 在同网段下一定可用?
  • 是否存在平台层面对组播/广播的限制策略?
  1. 在真机上,createUDPSocket 的接收链路是否存在已知限制或前置条件?
  • 如 bind 端口策略、权限声明、机型兼容差异等。
  1. startLocalServiceDiscovery 在 iOS/Android 的能力差异及已知问题有哪些?
  • 对空 serviceName + 参数错误回调是否有官方说明?
  1. 对“扫描局域网设备”场景,是否有推荐的标准实践或官方示例?
  • 例如建议组合 API、推荐重试/超时策略、调试方法。
  1. 后续是否有计划开放更完整的局域网发现能力(例如更稳定的发现接口)?



回答关注问题邀请回答
收藏

1 个回答

  • 智能回答 智能回答 本次回答由AI生成
    04-23
    有用
    回复
登录 后发表内容