基于WebRTC开源框架的实时视频聊天项目,搭建私人实时通信服务

本项目是一个 Web 应用,使用安全且可扩展的 WebRTC 构建,提供视频和音频通信、文件共享、屏幕共享、白板和实时 P2P 和群聊消息的实时通信。WebRTC 是一个开源框架,可在 Web 和本机应用程序中实现音频、视频和数据的实时通信。 它使用户能够通过视频和音频会议、网络研讨会、播客等与他人交流。


尽管任何 WebRTC 应用程序都使用 4 种类型的服务器:

  1. 应用程序服务器- 托管 Connect Web 应用程序!
  2. 信令服务器- WebRTC 信令是指建立、控制和终止通信会话的过程。为了让两个端点开始相互交谈,必须交换三种类型的信息: 会话控制信息确定何时初始化、关闭和修改通信会话。
  3. NAT Traversal Server (STUN & TURN) - WebRTC 在连接同一本地网络中的浏览器时表现出色。但是,一旦您开始到达您的网络之外——例如,进入企业防火墙——您将需要更多的火力。如果不使用 STUN(用于 NAT 的会话遍历实用程序)或 TURN(使用围绕 NAT 的中继的遍历)协议,防火墙配置不会让 WebRTC 进入。这就是您需要 STUN/TURN 服务器的原因。
  4. 媒体服务器- 媒体服务器派上用场,因为它有助于减少客户端需要发送的流的数量,通常为一个,甚至可以减少客户端需要接收的流的数量,具体取决于媒体服务器的功能。

但是目前 Connect 默认提供免费信令服务器,因此 Application Server 和 NAT Traversal Server 两台服务器即可。


一、环境依赖

由于应用程序是使用 Laravel 7 构建的,因此它需要具备 Laravel 7 的所有先决条件。 Laravel 的依赖项之一是Composer。以下是脚本的核心依赖项:

PHP >= 7.4
MySQL >= 8.0
Apache / Nginx
Node.js、npm、Composer

此外,还有一些文件和文件夹需要脚本的“写”权限。

.env 文件位于根文件夹中
storage/framework 文件夹及其子文件夹
storage/logs 文件夹及其子文件夹
bootstrap/cache 文件夹及其子文件夹
resources/lang文件夹及其子文件夹


二、基本部署

以宝塔环境为例,首先宝塔面板直接安装: PM2管理器以及对应版本的数据库、php。安装完成后重启服务器以生效:

# 1.安装宝塔
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install.sh && sh install.sh

# 2.配置宝塔
(a) 安装Fileinfo扩展  # 如果Fileinfo拓展安装失败,就是内存太小,添加swap
(b) 禁用函数: proc_open、symlink、putenv、pcntl_signal、passthru
(c) 创建站点 

其中值得注意的是,宝塔面板默认安装MySQL 8.0要求2核4G内存,低配服务器可以通过如下方式安装MySQL 8.0:

wget http://download.bt.cn/install/0/mysql.sh;
bash mysql.sh install 8.0

这样低内存服务器在宝塔面板安装Mysql8.0就实现了!

请注意:如果你已经安装了数据库,上面的命令会卸载删除当前数据库及数据,请提前备份,一定要提前备份!

# 3.安装Composer
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer

# 4.编辑环境变量:修改.env文件数据库连接内容
# 5.创建数据库、创建站点、申请ssl证书、进入域名目录拉取项目
git clone https://github.com/DXJian/P2PChat.git -b master 

# 6.创建上传目录软链接
php artisan storage:link

期间报错按照错误提示安装PHP拓展以及解除禁用函数即可,如:

在这里插入图片描述

# 7.设置storage目录权限为777
chmod -R  0777 storage

# 8.修改网站运行目录public ,取消防跨站攻击

# 9.添加网站伪静态如下:
location / {
    
      
    try_files $uri $uri/ /index.php$is_args$query_string;  
}

三、线上部署

  • 第一步检测环境是否合格,如若不合格按照不合格的选项整改即可。
  • 第二步连接数据库
  • 第三步创建管理员账户
  • 第四步要求填入访问代码,随意输入即可

在这里插入图片描述

项目上线后,进入设置(config)页面,(任意)填入Pusher Credential选项中的信息。

在这里插入图片描述


四、建立通信

instant meeting——start a meeting——Live Class
在这里插入图片描述
之后的报错不需要理会,instant meeting——meeting history

在这里插入图片描述

此时可以看到之前创建的代码为444的聊天室

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


五、新用户加入

新用户通过注册页面注册成功后,需要管理员激活新用户。

在这里插入图片描述


六、项目展示

激动人心的实时通信:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


其他可以辅助参考的信息:

  1. codecanyon-27525559-connect-live-class-meeting-webinar-online-training-web-conference
  2. https://kodemintserviceshelp.freshdesk.com/support/solutions/81000097241
  3. https://www.youtube.com/watch?v=QY_VdHvBsSI

至此,本文也就进入尾声了。希望本文能够起到抛砖引玉之效,也欢迎大家的批评交流。


如果您有任何疑问或者好的建议,期待你的留言、评论与关注!

猜你喜欢

转载自blog.csdn.net/deng_xj/article/details/122647069