WebRTC搭建与应用(一)-ICE服务搭建

ops/2024/12/20 6:38:41/

WebRTC搭建与应用(一)

近期由于项目需要在研究前端WebGL渲染转为云渲染,借此机会对WebRTC、ICE信令协议等有了初步了解,在此记录一下,以防遗忘。

第一章 ICE服务搭建

文章目录
  • WebRTC搭建与应用(一)
  • 前言
  • 一、ICE是什么?
  • 二、什么是STUN、TURN
  • 三、Coturn开源框架
    • 环境准备
    • 部署过程
      • 1.Ubuntu开启图形桌面化
      • 2.Windows远程连接Ubuntu
      • 3 安装Coturn
  • 总结

前言

之前工作主要集中于桌面端和前端的轻量化图形渲染与数据组织,服务端相关技术主要是接口调用,没有什么技术积累,本次搭建工作属于摸着石头过河。
最开始在本地测试WebRTC点对点传输没有任何问题,但是跨电脑测试时会提示ICE失败,所以还是得研究一下什么是ICE。

一、ICE是什么?

ICE即交互式连通建立方式(Interactive Connectivity Establishment),ICE并非一种新的协议,而是通过综合运用某几种协议(STUN、TURN等),使之在最适合的情况下工作,以弥补单独使用其中任何一种所带来的固有缺陷。

基于IP的语音、数据、视频等业务在网络中所面临的一个实际困难就是如何有效地穿透各种NAT(Network Address Translator:网络地址转换)以及FW(Fire Wall:防火墙)的问题。对此,SIP(会话初始化协议)以往的解决方法由ALGs(Application Layer Gateway Service:应用层网关)、STUN、TURN等方式。

二、什么是STUN、TURN

STUN(Session Traversal Utilities for NAT)即网络地址转换会话穿越应用程序。STUN提供了一种方式使一个端点能够确定NAT分配的和本地私有IP地址和端口相对应的公网IP地址和端口以及NAT的类型信息。它也为端点提供了一种方式保持一个NAT绑定不过期。NAT绑定过期则表示为相同的内网地址重新分配外网地址也就是端口号。

TURN(Traversal Using Relay NAT)即网络地址转换中继穿越协议。

TURN与STUN的共同点都是通过修改应用层中的私网地址达到NAT穿透的效果,不同点是TURN是通过两方通讯的“中间人”方式实现穿透。

三、Coturn开源框架

Coturn 是一种开源服务器框架用于实现 TURN及STUN协议,用于解决 NAT 穿透问题。它帮助客户端在受限网络环境(例如防火墙或 NAT 后面)中实现双向通信。

环境准备

Coturn主要部署在Linux系统中,本次测试采用华为云服务器Ubuntu 24.04版本。

部署过程

1.Ubuntu开启图形桌面化

之前仅通过FinalShell远程连接过Ubuntu系统的命令行模式,此次是本人第一次操刀服务器使用,说来惭愧,各种坑各种不会,所以好好记录一下一路的曲折。
sudo startx 启动图形用户界面;
如果失败,查看是否安装了图形界面,如果没有,可按下述流程安装:
(1)确保apt源可用并更新源
sudo apt-get update
(2)安装桌面图形化显示
sudo apt-get install ubuntu-desktop
(3)设置默认开启方式为图形化界面显示
sudo systemctl set-default graphical.target
(4)重启
reboot

2.Windows远程连接Ubuntu

对于前端开发人员来说一般都是在Windows环境进行开发,如果想要连接到Ubuntu服务器进行操作和测试,需要进行一些配置。
Windows的远程桌面使用的协议为RDP,首先需要在Ubuntu的操作系统中安装xrdp。
sudo apt-get install tightvncserver xrdp
安装完成后,在Windows中通过远程桌面连接输入Ubuntu的ip以及用户名、密码即可实现远程连接。
在这里插入图片描述
在这里插入图片描述

3 安装Coturn

安装过程请参考:
https://blog.csdn.net/yushangyong/article/details/129973873

切记:listening-port设置的监听端口一定要将TCP和UDP都开放,min-port和max-port设置的端口一定要将UDP开放对外,否则会无法连接。

以下是中文版TURN服务测试地址
https://docs.wildfirechat.cn/webrtc/trickle-ice/

总结

以上步骤如果都正确完成以后,那恭喜你WebRTC的长征迈出了坚实的一步,下面就要开始研究点对点通信以及WebRTC推流了,后续有时间在尝试一下使用docker部署Coturn,我们下一章继续WebRTC之旅。


http://www.ppmy.cn/ops/143405.html

相关文章

服务器数据恢复—RAIDZ离线硬盘数超过热备盘数导致阵列崩溃的数据恢复案例

服务器存储数据恢复环境: ZFS Storage 7320存储阵列中有32块硬盘。32块硬盘分为4组,每组8块硬盘,共组建了3组RAIDZ,每组raid都配置了热备盘。 服务器存储故障: 服务器存储运行过程中突然崩溃,排除人为误操…

游戏渠道假量解决方案

某推广公司在推广过程中被查出“短期内点击量激增”“存在同一地址多次访问”“已注册用户重复注册”等数据作弊行为,法院判罚退还服务费200余万元,并赔偿违约金约350万元。 某公司为提升其游戏在应用商店榜单排名,委托某网络公司进行下载、注…

循环神经网络(RNN)在时序预测中的应用与优势

目录 ​编辑 引言 RNN的基本结构与工作原理 RNN的记忆能力 参数共享与灵活性 动态特征提取 处理变长序列 序列到序列的学习 解决梯度消失和爆炸问题 端到端学习 RNN在实际应用中的优势 RNN的挑战与改进 结论 引言 在数据科学和机器学习领域,时序预测是…

使用 Python 实现 WebSocket 服务器与客户端通信

简介 WebSocket 是一种基于 TCP 协议的通信协议,能够在客户端与服务器之间进行全双工(双向)通信。相比传统的 HTTP 协议,WebSocket 可以实现实时数据的传输,尤其适合需要实时交互的应用场景,如在线游戏、实…

3D目标检测数据集及评价指标

1. KITTI 一个前视双目数据集,附有雷达数据,主要用于单目3D目标检测模型。数据集根据遮挡将目标分为三档,分别是未遮挡Easy,半遮挡Mod.,和大部分遮挡Hard,一般模型检测指标都是根据这三类标签分别计算mAP。…

HCIE-day7

三层路由 当路由器(或者其他三层设备)收到一个IP数据包时,路由器会找出报文中的IP头里的目的IP地址,然后根据目的IP地址在自己的路由表(routing table)中进行查询,找到匹配的路由条目之后&…

GIT区域介绍及码云+GIt配置仓库

GIT区域介绍 创建文件夹git init 1、git有3个区域 工作区(working directory):项目的根目录,不包 括.git在内的其他文件暂存区(stage area):是一个看不见的区域,git add 命令就是将文…

设计模式——单例模式(饿汉式,懒汉式等)

设计模式——单例模式(饿汉式,懒汉式等) 目录 设计模式——单例模式(饿汉式,懒汉式等)概念核心要点实现基础要点饿汉式懒汉式懒汉式(线程安全,双重检查锁定)静态内部类实…