- 苏格团队
- 作者:Jason
前言
笔者最近收到要求 远程控制局域网内多N台终端同步操作 的需求(功能类似windows上的远程桌面)。 最终笔者实现了一种不太成熟,不太稳定,但基本满足现阶段需求的方案,且未来会持续迭代。
出于种种复杂原因,笔者无法使用现在一些市面上很成熟的解决方案。但由于该项目仅限于内部人员使用,即对方案的成熟性,可靠性,可维护性没有太多要求(面部表情逐渐舒展)。
分析
远程控制桌面,无论是1对1还是1对多。核心的数据的无非就是俩类。音视频信息,控制信息 (键盘,鼠标,快捷键等)。当得到这俩个数据时,我们就可以 在控制端实时获取受控端的视频信息以及传输控制指令 。那么接下的操作就是:
1.获取被控制端的视频流
作为一个前端开发工程师,对于如何获取设备的音视频信息这件事,本能的我就想起了 WebRTC (网页即时通讯)协议。
然后就是分析具体的设备和场景是否适用,一顿脑补分析后,我看行(主要是WebRTC本身强大)。
2.发送与接收控制信息
由于具体业务和某些神秘的限定和权衡。采用TCP协议传输消息是不可能的。那没啥好说的了,UDP救我!
虽然他们一次次给我带来的都是,这个不行,那个也不行 的种种限制,但是好消息也是有的,在一系列复杂的操作后,我拿到了受控方模拟鼠标和键盘操作的接口。得,齐活!
UDP传输不可靠怎么办?
开发初期,笔者遇到的最大的问题就是UDP的传输是无连接的,不保证可靠性,但是在该业务场景下 多个受控端需要对比一段操作