WebRTC 环境搭建

主题

本文主要描述webrtc开发过程中所需的环境搭建

环境:

运行环境:ubuntu20.04

Node.js环境搭建

安装编译 Node.js 所需的依赖包:

sudo apt-get updatesudo apt-get install -y build-essential libssl-dev

下载 Node.js 源码:

curl -sL https://nodejs.org/dist/v14.19.0/node-v14.19.0.tar.gz -o node-v14.19.0.tar.gz

解压源码包:

tar -xzf node-v14.19.0.tar.gzcd node-v14.19.0

配置、编译和安装 Node.js:

./configuresudo make && sudo make install
验证 Node.js 和 npm 的安装
node -v && npm -v
测试

app.js

// 引入 http 模块
const http = require('http');// 创建一个 HTTP 服务器
const server = http.createServer((req, res) => {// 设置 HTTP 响应头res.statusCode = 200;res.setHeader('Content-Type', 'text/plain');// 向客户端发送响应res.end('Hello, World!
');
});// 指定服务器监听的端口号
const port = 3000;
server.listen(port, () => {console.log(`服务器正在监听端口 ${port}`);
});node app.js

coturn搭建

ubuntu版本

安装 COTURN 软件包:

sudo apt-get install coturn

编辑 COTURN 配置文件:

sudo vim /etc/coturn/turnserver.conf

请根据实际情况修改以下配置项:

  • realm: 设置 TURN 服务器的域名或 realm。

  • user: 设置 TURN 服务器的用户名和密码。

  • static-auth-secret: 设置身份验证的密钥。

  • server-name: 设置 TURN 服务器的域名或 IP 地址。

    #中继服务器监听的IP地址,NAT环境下直接写私网IP地址,可以指定多个IP
    listening-ip= 你自己的内网IP
    #中继服务器转发地址(本地IP地址将用于传递数据包的给每个端),和监听地址一样
    #一般不开
    #relay-ip=你自己的公网ip
    #外部IP,NAT环境下直接写:公网IP/私网IP
    external-ip=公网ip/内网ip
    #cli-password=123456
    #打开fingerprint的注释,使用长期证书机制。
    fingerprint
    #打开密码验证,使用短期证书机制。
    lt-cred-mech
    #服务器名称,用于OAuth认证,默认和realm相同,直接填公网ip.部分浏览器本段不设可能会引发cors错误。
    server-name=公网ip

    TURN REST API的长期凭证机制范围,同样设为ip,同server-name.

    realm=公网ip
    #移动的ICE(MICE)的规范支持。
    mobility
    #快捷的添加用户是使用user=XXX:XXXX的方式。
    user=jbj:123456

启动 COTURN 服务:

sudo systemctl start coturn

centos版本

# 更新系统包
sudo yum update -y# 安装构建工具和 OpenSSL 开发库
sudo yum groupinstall -y "Development Tools"
sudo yum install -y openssl-devel
sudo yum install -y coturnsudo vim /etc/turnserver.conf#中继服务器监听的IP地址,NAT环境下直接写私网IP地址,可以指定多个IP
listening-ip=172.23.111.111
#中继服务器转发地址(本地IP地址将用于传递数据包的给每个端),和监听地址一样
#relay-ip=8.138.111.111
#外部IP,NAT环境下直接写:公网IP/私网IP
external-ip=8.138.111.111
cli-password=123456
#打开fingerprint的注释,使用长期证书机制。
fingerprint
#打开密码验证,使用短期证书机制。
lt-cred-mech
#服务器名称,用于OAuth认证,默认和realm相同,直接填公网ip.部分浏览器本段不设可能会引发cors错误。
server-name=8.138.111.111
# TURN REST API的长期凭证机制范围,同样设为ip,同server-name.
realm=8.138.111.111
#移动的ICE(MICE)的规范支持。
mobility
#快捷的添加用户是使用user=XXX:XXXX的方式。
user=jbj:123456cert=/www/server/nginx/webrtc/cert.pem
pkey=/www/server/nginx/webrtc/key.pem

检查 COTURN 服务状态:

#开启
sudo systemctl restart coturn
sudo systemctl status coturn

之后,可以使用 COTURN 服务器提供的 STUN 和 TURN 功能,帮助 WebRTC 等实时通信应用程序解决 NAT 穿透问题。

也可以使用命令行启动

# nohup是重定向命令,输出都将附加到当前目录的 nohup.out 文件中;
# 命令后加 & ,后台执行起来后按 
ctr+c,不会停止
sudo nohup turnserver ‐L 0.0.0.0 ‐a ‐u jbj:123456 ‐v ‐f ‐r nort.gov &# 前台启动
sudo turnserver ‐L 0.0.0.0 ‐a ‐u jbj:123456 ‐v ‐f ‐r nort.gov  
#然后查看相应的端口号3478是否存在进程
sudo lsof ‐i:3478

sar网络上传下载检测

sudo apt-get install sysstat#每1s检测一次
sudo sar -n DEV 1

  • 09:03:19 PM: 这表示输出统计信息的时间是下午 9 点 3 分 19 秒。

网络接口信息:

  • lo: 这是本地回环接口,用于本机之间的通信。

  • ens33: 这是主网卡接口。

  • docker0: 这是 Docker 容器网桥接口。

  • docker_gwbridge: 这是 Docker 网关桥接口。

网络流量统计指标:

  • rxpck/s: 每秒接收的数据包数量。

  • txpck/s: 每秒发送的数据包数量

  • rxkB/s: 每秒接收的数据量,单位为 KB。

  • txkB/s: 每秒发送的数据量,单位为 KB。

  • rxcmp/s: 每秒接收的压缩数据包数量。

  • txcmp/s: 每秒发送的压缩数据包数量。

  • rxmcst/s: 每秒接收的多播数据包数量。

  • %ifutil: 网卡利用率百分比。

nginx环境搭建

安装 Nginx 编译依赖

sudo apt-get updatesudo apt-get install build-essential libtool zlib1g-dev libpcre3 libpcre3-dev openssl

下载 Nginx 源码

wget http://nginx.org/download/nginx-1.15.8.tar.gz
tar xvzf nginx-1.15.8.tar.gz
cd nginx-1.15.8/

配置 Nginx 编译参数 (支持 HTTPS)

./configure --with-http_ssl_module

编译安装

# 编译 Nginx
make# 安装 Nginx
sudo make install查看 Nginx 的编译参数
nginx -V--with-http_ssl_module 表示 Nginx 已经编译了对 SSL/TLS 协议的支持。

学习资料分享

0voice · GitHub

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/496702.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT-------认识QT

QT简介 QT是一个跨平台的C图形用户界面应用程序框架,由挪威Trolltech公司于1991年开发并发布。它为开发者提供了一套丰富的类库和工具,用于创建各种类型的应用程序,包括桌面应用、移动应用、嵌入式系统应用等。QT具有高度的可定制性和可扩展…

SpringBoot配置文件、热部署、YAML语法、配置文件值注入

SpringBoot的配置文件 文章目录 SpringBoot的配置文件1.SpringBoot的热部署2.配置文件2.1配置文件的作用2.2YAML配置文件:2.3YAML 与 JSON 和 XML 的对比 3.YAML语法3.1键值对3.2值的写法3.3对象、Map(属性和值)(键值对&#xff0…

基于BiTCN双向时间卷积网络实现电力负荷多元时序预测(PyTorch版)

Bidirectional Temporal Convolutional Network \begin{aligned} &\text{\Large \color{#CDA59E}Bidirectional Temporal Convolutional Network}\\ \end{aligned} ​Bidirectional Temporal Convolutional Network​ Bidirectional Temporal Convolutional Network (BiTC…

【JavaEE】Spring Web MVC

目录 一、Spring Web MVC简介 1.1 MVC简介1.2 Spring MVC1.3 RequestMapping注解1.3.1 使用1.3.2 RequestMapping的请求设置 1.3.2.1 方法11.3.2.2 方法2 二、Postman介绍 2.1 创建请求2.2 界面如下:2.3 传参介绍 一、Spring Web MVC简介 官方文档介绍&#xff…

低成本Type - C单口便携屏的全方位解析

在科技迅猛发展的当下,便携式电子产品在日常生活中的地位愈发重要。Type - C单口便携显示器作为新兴显示设备脱颖而出。本文将简述其特点、应用场景、技术原理与发展趋势。 一、特点 Type - C单口便携显示器最大的优势是便携性。它以Type - C接口进行数据传输与供电…

TestMAX/DFT Compiler:时序单元的类型、连接顺序和后DFT优化

相关阅读 TestMAX/DFT Compilerhttps://blog.csdn.net/weixin_45791458/category_12865937.html?spm1001.2014.3001.5482 时序单元的状态 未映射的时序单元(Unmapped Sequential Cell) 在Design Compiler读取了一个RTL设计后,Design Compiler内置的HDL Compiler工…

「瑞仕云曜璟庭」多轨交通+成熟配套 杨浦滨江宜居之高地

1. 均价不足11w 内环内真正高性价比 作为顶级城市资源的集中地,内环向来是购房者争相角逐的重中之重。 但是,内环很小,价格很高。 目前内环的二手房最高挂牌价已经达到约31.95万/㎡,最高成交价已经达到约33.79万/㎡&#xff…

基于STM32的智能家居环境监控系统设计

目录 引言系统设计 硬件设计软件设计系统功能模块 环境监控模块控制模块显示模块系统实现 硬件实现软件实现系统调试与优化结论与展望 1. 引言 随着智能家居技术的发展,环境监控系统已经成为家居管理的重要组成部分。智能家居环境监控系统通过实时监测室内温度、湿…

游戏开发线性空间下PS工作流程

前言 使用基于物理的渲染,为了保证光照计算的准确,需要使用线性空间; 使用线性空间会带来一个问题,ui 在游戏引擎中的渲染结果与 PS 中的不一致: PS(颜色空间默认是sRGB伽马空间)&#xff1a…

JavaWeb(一) | 基本概念(web服务器、Tomcat、HTTP、Maven)、Servlet 简介

1. 基本概念 1.1、前言 web开发: web,网页的意思,www.baidu.com静态 web html,css提供给所有人看的数据始终不会发生变化! 动态 web 淘宝,几乎是所有的网站;提供给所有人看的数据始终会发生变化&#xf…

在国产电脑上运行PDFSAM软件使用pdf分割合并交替混合处理pdf文档

软件下载地址: https://sourceforge.net/projects/pdfsam/files/ 需要注意事项,系统需要java环境,确认系统有java环境,根据软件版本需求安装对应的java运行环境。 下载pdfsam-4.3.4-linux.tar.gz安装包,解压,将runt…

windows下Redis的使用

Redis简介: Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。 Redis通常被称为数据结构服务器,因为值(value&#xff…

【Linux系统编程】:信号(4)——信号的处理

1.进程地址空间内核区 我们之前都是谈进程地址空间的用户区,接下来我们谈谈内核区。 进程地址空间中的内核区是操作系统内核在进程地址空间中所占据的特定区域。 一般情况下,一个操作系统只有一个内核区以及一个内核级页表。而进程可以有多个页表。不论…

用Python写炸金花游戏

文章目录 **代码分解与讲解**1. **扑克牌的生成与洗牌**2. **给玩家发牌**3. **打印玩家的手牌**4. **定义牌的优先级**5. **判断牌型**6. **确定牌型优先级**7. **比较两手牌的大小**8. **打印结果** 完整代码 以下游戏规则: 那么我们要实现的功能,就是…

掌握软件工程基础:知识点全面解析【chap03、chap05、chap06、chap08、chap09】

chap03 UML UML定义了哪些视图?分别具有什么特点? 1.用例图(Use case diagram) 用例图展示各类外部执行者与系统所提供的用例之间的连接。一个用例是系统所提供的一个功能的描述,执行者是指使用这些用例的…

Linux嵌入式编程中与线程有关的知识(线程的概念、线程的创建、互斥锁、线程挂起、主线程、如何看查线程的ID等知识点)

目录 01-线程的概念(通过“进程和线程”的区别来理解)简单的理解详细的理解1. **定义与本质**2. **资源占用**3. **切换开销**4. **通信方式**5. **独立性**6. **调度**7. **使用场景**8. **在Linux中实现**对比总结 02-线程创建函数pthread_create()详解**函数原型****参数说明…

数据结构(Java)——链表

1.概念及结构 链表是一种 物理存储结构上非连续 存储结构,数据元素的 逻辑顺序 是通过链表中的 引用链接 次序实现的 。 2.分类 链表的结构非常多样,以下情况组合起来就有 8 种链表结构: (1)单向或者双向 (…

win版ffmpeg的安装和操作

一、ffmpeg软件安装: ffmpeg是一个通过命令行将视频转化为图片的软件。 在浏览器搜索ffmpeg在官网里找到软件并下载(不过官网很慢),建议用这个下载。 下载的文件是一个zip压缩包,将压缩包解压,有如下文件…

SpringBoot学习

一、SpringBoot介绍 (一)SpringBoot简介 Spring Boot 是由 Pivotal 团队提供的一个用于简化 Spring 应用初始搭建以及开发过程的框架。它基于 Spring 框架,旨在通过减少配置和简化开发流程来加速应用的开发和部署。Spring Boot 提供了嵌入式的 Tomcat、Jetty 或 Un…

FIR数字滤波器设计——窗函数设计法——滤波器的时域截断

与IIR数字滤波器的设计类似,设计FIR数字滤波器也需要事先给出理想滤波器频率响应 H ideal ( e j ω ) H_{\text{ideal}}(e^{j\omega}) Hideal​(ejω),用实际的频率响应 H ( e j ω ) H(e^{j\omega}) H(ejω)去逼近 H ideal ( e j ω ) H_{\text{ideal}}…