timzaak / blog

8 stars 1 forks source link

RustDesk 技术栈 #78

Closed timzaak closed 2 years ago

timzaak commented 2 years ago

RustDesk 是开源的类 AnyDesk 产品。我关注它主要看它是如何获取远程电脑信息并远程操作。

类似的产品我本以为是在 vnc、windows remote descktop 等协议上做二次兼容所得,没想到实际代码是如此粗暴。

客户端所看到的远端界面实际是图片,采用 scrap 截图。 客户端输入的键盘鼠标信息,在远端用enigo 来进行回放。 客户端音频比较麻烦,需要安装 libpulseaudio 来支持 loopback,windows 还有 soundsIO 等,不过这个对于大部分远端来讲不重要。 粘贴板也属于特殊的服务,需要 clipboard-master 来解决。 网络方面, yamux 多路复用 + p2p relay 服务。

还有一些很细节方面可以关注,例如:唤醒屏幕、远程登录、键位冲突等。

目前看,项目成熟度还有待提高,主要是兼容性、易用性和流量开销三方面。这些都是钱的问题。

timzaak commented 2 years ago

简单、粗暴 才是王道!

timzaak commented 2 years ago

反思自己当时的思维,陷入了对 PC 桌面 API 过分低估的境况。 是否可以这么想,要做一个产品,要从胶水做起,而不是纠结包含底层设计的最优实现。