RustDesk 技术栈
timzaak opened this issue · comments
timzaak commented
RustDesk 是开源的类 AnyDesk 产品。我关注它主要看它是如何获取远程电脑信息并远程操作。
类似的产品我本以为是在 vnc、windows remote descktop 等协议上做二次兼容所得,没想到实际代码是如此粗暴。
客户端所看到的远端界面实际是图片,采用 scrap 截图。
客户端输入的键盘鼠标信息,在远端用enigo 来进行回放。
客户端音频比较麻烦,需要安装 libpulseaudio 来支持 loopback,windows 还有 soundsIO 等,不过这个对于大部分远端来讲不重要。
粘贴板也属于特殊的服务,需要 clipboard-master 来解决。
网络方面, yamux 多路复用 + p2p relay 服务。
还有一些很细节方面可以关注,例如:唤醒屏幕、远程登录、键位冲突等。
目前看,项目成熟度还有待提高,主要是兼容性、易用性和流量开销三方面。这些都是钱的问题。
timzaak commented
简单、粗暴 才是王道!
timzaak commented
反思自己当时的思维,陷入了对 PC 桌面 API 过分低估的境况。
是否可以这么想,要做一个产品,要从胶水做起,而不是纠结包含底层设计的最优实现。