timzaak / blog

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

RustDesk 技术栈

timzaak opened this issue · comments

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

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

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

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

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

简单、粗暴 才是王道!

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