教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 一.基于webrtc的远程控制系统设计与实现 学习

一.基于webrtc的远程控制系统设计与实现 学习

发布时间:2022-12-21   编辑:jiaochengji.com
教程集为您提供一.基于webrtc的远程控制系统设计与实现 学习等资源,欢迎您收藏本站,我们将为您提供最新的一.基于webrtc的远程控制系统设计与实现 学习资源

基于webrtc的远程控制系统设计与实现

关键词

WerRTC,WebSocket,P2P连接,实时通信,视频系统,SSH

主要目的

采用WebRTC协议与WebSocket协议设计了一套远程控制系统,实现远程监控、远程指令、远程登录等功能,

主要过程

1)使用go语言开发WebRTC信令服务器,采用WebSocket协议实现了设备端发现与获取在线设备列表等功能,可以帮助设备端与客户端之间交换SDP。
2)使用go语言开发设备端程序,支持设备端使用WebSocket协议连接到信令服务器实现上线、离线等功能,支持与客户端之间建立WebRTC对等连接,支持使用Gstreamer来进行音视频的采集与编码,支持从客户端接收指令执行并返回执行结果。
3)使用Web前端技术实现了Web客户端,支持从信令服务器获取当前在线设备并选择其中可用的设备建立WebRTC对等连接,支持通过RTCDataChannel向设备端发送指令信息,支持SSH远程登录到设备端。

关键技术

  • WebRTC(Web Real Time Communication): WebRTC并不是单个的协议,而是包括了音视频的采集、编解码、流媒体传输、视频播放等功能在内的一系列协议的总称,WebRTC可以在信令服务器的帮助下,实现直接在两个客户端之间建立对等连接;支持RTCDataChannel,可以直接利用对等连接发送指令信息。
  • SDP(Session Description Protocol):SDP是一个用来规范多媒体特征的会话协议,是多个属性的集合体,可以在会话建立的过程中,描述双方将要传输的媒体类型、使用的编码方案与传输协议、ICE的信息等,它还可以和SAP、RTSP和HTTP等协议相结合,功能帮助建立会话。
  • NAT(Network Address Translation,网络地址转换):是一种为了解决IPv4地址短缺而提出的方案,是一种可以将内部私有网络地址映射到公网网络地址的技术。从内网发出的数据包会首先到达NAT,由NAT修改数据包的地址域之后再到外部网络。从外部网络进入的数据包也会执行相同的操作。NAT的作用主要有:(1)通过NAT的方式,可以隐藏内网主机的网络IP地址,从而实现更高的安全性;(2)因为不同的内网设备可以映射为同一公网IP的不同端口,并且可以按需分配,实现用少量公网IP映射更多内网设备的功能,一定程度上可以缓解IPv4地址不足的现状。
  • WebSocket:为Web应用程序客户端和服务端之间提供了一种全双工的通信机制,本系统采用WebSocket来完成服务端的功能。
  • Golang:一款静态强类型的编译型编程语言,用于在golang使用协程Goroutine和管道Channel实现CSP模型,处理信令服务这样的高并发的场景。

总体设计

  • 对等连接:通过交换对等连接双方的SDP,即可帮助双方建立对等连接。

    • 服务端:为了实现对等连接,服务端在用户通过浏览器访问服务端时,可以响应并返回Web客户端;其次,服务端需要能够接收设备端上线的信息,将其添加到在线设备列表中,并且拥有能获取当前在线设备列表的接口;在Web客户端选择要连接的设备之后,服务端能够作为中继服务器帮助双方交换各自的SDP,并在设备端建立对等连接之后,将设备列表中的对应设备设为不可用。
    • 设备端:设备端需要能够通知服务端自己在线,并定期发送心跳包维护在线状态;能够在收到连接请求时生成本地SDP,并通过服务端实现与客户端交换彼此的SDP,之后建立WebRTC对等连接;
    • 客户端:Web客户端需要能够从服务端获取当前在线的设备列表,并且能够选择要连接到的设备,之后生成本地SDP,并通过服务端实现与设备端交换彼此SDP,之后建立WebRTC对等连接;
  • 远程监控

    • 设备端:可以通过摄像头设备采集实时的监控信息,并可以将采集到的音视频信息通过WebRTC的RTCPeerConnection推送到客户端,实现实时推送当前监控视频的功能。
    • 客户端:可以接收并播放WebRTC的RTCPeerConnection推送的音视频流,实现实时的观看远程监控的功能,并且支持简单的控制功能,比如暂停/播放、增/减音量、全屏播放等。
  • 远程指令

    • 客户端:支持用户选择指令作用的设备端设备(如LED灯)以及对应的操作(如打开LED灯),之后通过WebRTC的RTCDataChannel发送对应指令到设备端进行执行,并显示执行结果,实现向远端发送控制指令的功能;
    • 设备端:支持获取解析Web客户端通过WebRTC的RTCDataChannel发送的指令信息,能够依据指令来操作自身的设备,并返回执行结果,实现接收并执行远程指令的功能。
  • 远程登录

    • 客户端:实现基于Web的Terminal界面,可以接收用户输入的Shell指令,然后通过WebRTC的RTCDataChannel发送到设备端,并展示执行结果,实现远程登录功能。
    • 设备端:接收Web客户端通过WebRTC的RTCDataChannel发送的Shell指令,由本机执行之后返回执行结果,实现远程登录功能。

系统运行环境

到此这篇关于“一.基于webrtc的远程控制系统设计与实现 学习”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
关于HTML 5的足以改变我们未来生活的十项提示
windows系统进程全攻略
学习J2SE过程中的30个基本概念
ASP.NET系统用户权限设计与实现
php定时计划任务 ignore_user_abort的用法举例
给初学者一些学习Python的建议
零基础Python学习路线图,Python初学者必须要了解,让你少走弯路
Centrifugo —— 用 Golang 实现的实时消息通信平台
php可以实现dubbo接口吗
深入php设计模式实例详解

[关闭]
~ ~