鸿蒙Moonlight作者您好。我目前正在开发 HarmonyOS NEXT 原生 Tailscale 客户端 MeshArc:
https://github.com/flypigJ/Tailscale-OHOS
https://appgallery.huawei.com/app/detail?id=io.github.tailscaleohos&channelId=SHARE&source=appshare
最近我在实际使用 Moonlight 与 MeshArc 时,发现两者非常适合进行跨应用联动,在远程环境下使用串流 ,因此想向您咨询是否有合作实现一个外部启动接口的意向。
我的设想是由 MeshArc 负责 Tailscale 网络与设备入口,Moonlight 继续负责配对、应用列表、音视频解码和输入控制。
具体交互流程如下:
MeshArc 在 Tailnet 设备列表中展示在线电脑。
MeshArc 通过电脑的 Tailscale IP 请求 Sunshine 的 /serverinfo,判断当前是否存在可访问的 Sunshine 服务。
检测成功后,在对应设备卡片中显示“开始串流”按钮。
用户点击后,MeshArc 通过 HarmonyOS Want 或 Deep Link 拉起 Moonlight,并传入主机 IP、设备名称和当前 Tailscale 连接路径。
Moonlight自动添加或打开对应主机。首次使用仍按原有流程完成配对;已经配对时,可以直接进入该主机的应用列表。
这样用户可以直接在 MeshArc 的设备列表中完成:
“发现电脑 → 检测 Sunshine → 一键进入 Moonlight”
无需再手动复制和输入 100.x.x.x 地址。
另外,我在真机测试中发现,当 Tailscale 无法建立直连、流量经过 DERP 中继时,Moonlight使用默认较高码率会出现明显卡顿;主动降低码率后仍有一定的可用性。
因此我还希望在启动参数中传递连接路径和一次性的推荐串流配置。例如:
{
"protocolVersion": 1,
"action": "openHost",
"source": "MeshArc",
"host": "100.64.12.34",
"displayName": "Jerry-PC",
"pathType": "derp",
"derpRegionCode": "hkg",
"latencyMs": 92,
"lossPercent": 0,
"streamProfile": "relaySafe",
"recommendedBitrateKbps": 5000,
"temporaryOverride": true
}
其中推荐码率仅对本次启动生效,不覆盖 Moonlight 中用户原有的全局、主机或应用设置;用户也可以选择继续使用原配置。
我认为 Moonlight 一侧需要的最小改动主要是:
提供一个可由外部应用调用的 Want 或 Deep Link 入口;
在应用首次启动及已经运行时接收启动参数;
根据传入地址自动添加或定位主机;
支持一次性的临时码率覆盖;
其余配对、证书、应用列表和串流逻辑仍完全由 Moonlight 管理。
MeshArc 一侧的 Sunshine 探测、Tailscale 直连/Peer Relay/DERP 判断、参数生成、异常提示和 UI 均可以由我完成。若您认可这个方向,我也愿意根据 Moonlight 现有架构编写相应代码并提交 PR,由您决定最终的接口形式和实现方式。
整个联动只会在用户明确点击“开始串流”后传递目标设备的 Tailscale IP、显示名称和网络质量信息,不涉及 Moonlight 的配对证书、账号信息或其他私有数据。
我觉得这种合作可以让 Moonlight 获得更便捷的跨公网使用入口,也能让 MeshArc 从单纯的组网工具进一步成为 HarmonyOS NEXT 上的远程设备入口。双方应用仍保持独立发布和维护,MeshArc 也会在功能页面和项目说明中明确标注并推荐安装 Moonlight。
不知道您是否对这一联动方向感兴趣?有意请联系 15821178583@163.com
感谢您开发 鸿蒙Moonlight,也期待有机会合作。
鸿蒙Moonlight作者您好。我目前正在开发 HarmonyOS NEXT 原生 Tailscale 客户端 MeshArc:
https://github.com/flypigJ/Tailscale-OHOS
https://appgallery.huawei.com/app/detail?id=io.github.tailscaleohos&channelId=SHARE&source=appshare
最近我在实际使用 Moonlight 与 MeshArc 时,发现两者非常适合进行跨应用联动,在远程环境下使用串流 ,因此想向您咨询是否有合作实现一个外部启动接口的意向。
我的设想是由 MeshArc 负责 Tailscale 网络与设备入口,Moonlight 继续负责配对、应用列表、音视频解码和输入控制。
具体交互流程如下:
MeshArc 在 Tailnet 设备列表中展示在线电脑。
MeshArc 通过电脑的 Tailscale IP 请求 Sunshine 的 /serverinfo,判断当前是否存在可访问的 Sunshine 服务。
检测成功后,在对应设备卡片中显示“开始串流”按钮。
用户点击后,MeshArc 通过 HarmonyOS Want 或 Deep Link 拉起 Moonlight,并传入主机 IP、设备名称和当前 Tailscale 连接路径。
Moonlight自动添加或打开对应主机。首次使用仍按原有流程完成配对;已经配对时,可以直接进入该主机的应用列表。
这样用户可以直接在 MeshArc 的设备列表中完成:
“发现电脑 → 检测 Sunshine → 一键进入 Moonlight”
无需再手动复制和输入 100.x.x.x 地址。
另外,我在真机测试中发现,当 Tailscale 无法建立直连、流量经过 DERP 中继时,Moonlight使用默认较高码率会出现明显卡顿;主动降低码率后仍有一定的可用性。
因此我还希望在启动参数中传递连接路径和一次性的推荐串流配置。例如:
{
"protocolVersion": 1,
"action": "openHost",
"source": "MeshArc",
"host": "100.64.12.34",
"displayName": "Jerry-PC",
"pathType": "derp",
"derpRegionCode": "hkg",
"latencyMs": 92,
"lossPercent": 0,
"streamProfile": "relaySafe",
"recommendedBitrateKbps": 5000,
"temporaryOverride": true
}
其中推荐码率仅对本次启动生效,不覆盖 Moonlight 中用户原有的全局、主机或应用设置;用户也可以选择继续使用原配置。
我认为 Moonlight 一侧需要的最小改动主要是:
提供一个可由外部应用调用的 Want 或 Deep Link 入口;
在应用首次启动及已经运行时接收启动参数;
根据传入地址自动添加或定位主机;
支持一次性的临时码率覆盖;
其余配对、证书、应用列表和串流逻辑仍完全由 Moonlight 管理。
MeshArc 一侧的 Sunshine 探测、Tailscale 直连/Peer Relay/DERP 判断、参数生成、异常提示和 UI 均可以由我完成。若您认可这个方向,我也愿意根据 Moonlight 现有架构编写相应代码并提交 PR,由您决定最终的接口形式和实现方式。
整个联动只会在用户明确点击“开始串流”后传递目标设备的 Tailscale IP、显示名称和网络质量信息,不涉及 Moonlight 的配对证书、账号信息或其他私有数据。
我觉得这种合作可以让 Moonlight 获得更便捷的跨公网使用入口,也能让 MeshArc 从单纯的组网工具进一步成为 HarmonyOS NEXT 上的远程设备入口。双方应用仍保持独立发布和维护,MeshArc 也会在功能页面和项目说明中明确标注并推荐安装 Moonlight。
不知道您是否对这一联动方向感兴趣?有意请联系 15821178583@163.com
感谢您开发 鸿蒙Moonlight,也期待有机会合作。