搭建一个线上版远程视频聊天

简介: 搭建一个线上版远程视频聊天

目录



前言


搭建前端https访问:


配置后端https请求:


前言

在另一篇博客中已经实现了远程视频聊天,然而这种方式只能运行在本地或者https服务下,因为navigator.mediaDevices.getUserMedia需要运行在安全模式下,所以这篇文章将对视频聊天做一个改进,达到真正的远程聊天功能

之前的案例:使用JS+socket.io+WebRTC+nodejs+express搭建一个简易版远程视频聊天


搭建前端https访问:

搭建https的第一步得有一个服务器,相关的配置说明在我另一篇文章有提到

案例:本地项目上线流程

然后,购买域名并备案,第一次要久一点,大概20天左右

在域名界面进行域名解析和ssl证书下载(后续配置https)

image.png

将域名绑定服务器外网ip


image.png

域名界面点进管理,购买免费证书并下载,这里用的是Nginx


image.pngimage.png

把下载的key和pem放在Nginx根目录下,部署视频聊天前端文件夹Video至根目录,打开conf文件夹下的nginx.conf文件并编辑

image.png

在nginx.conf文件中添加代码,代理Video文件夹下的video.html文件至12345端口


# Video
    server {
        listen       12345;
        server_name  localhost;
        location / {
            root   Video;
            index  video.html;
        }
    }

在nginx.conf文件中添加以下代码配置https证书,将上面的代理网站部署https证书


# HTTPS server
    #
    server {
       listen       443  ssl;
       server_name  localhost;
       ssl_certificate      ../cert.pem;
       ssl_certificate_key  ../cert.key;
       ssl_session_cache    shared:SSL:1m;
       ssl_session_timeout  5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        location  /Video/{
           proxy_pass   http://127.0.0.1:12345/;
        }
    }


最后通过访问https://域名/Video/的方式打开前端页面


配置后端https请求:

将之前下载的证书文件复制到server目录,或者其他目录,server能访问到即可



打开server修改代码,之前我们的写法是


const express = require("express");
const app = express();
const server = require("http").Server(app);
const io = require("socket.io")(server);

现在得做个小修改,其他代码不动

const express = require('express')
const app = express();
const fs = require('fs');
const options = {//读取证书文件
  key: fs.readFileSync('cert.key'),
  cert: fs.readFileSync('cert.pem')
};
const server = require('https').createServer(options,app);
const io = require('socket.io')(server);

后端修改成https的目的是因为前端部分放在https服务器上,而后端用http请求方式,浏览器会报http的请求错误


image.png

然后把请求地址改为https即可访问


最后我们看看效果

由于电脑上的摄像头无法被两个页面调用,所以我用手机和电脑进行远程视频

电脑端的录屏

image.png

手机端录屏

image.png总结:由于视频聊天涉及隐私问题,自己试着研究一下还可以,所以就不放案例试用链接,之前的视频聊天案例

相关文章
|
Web App开发 应用服务中间件 Go
尝鲜:如何搭建一个简单的webrtc服务器
前几天我一朋友问我有关webrtc的事,简单了解了下相关知识,搭建了一个webrtc的服务,以及经历的各种踩坑事件,感觉踩坑主要是Python、Node、OpenSSL等版本问题和证书问题导致。本来以为很简单的搭建,但在搭建的过程中遇到各种阻碍,写一篇文章梳理一下。
12558 0
|
安全 jenkins 持续交付
Jenkins - Window下,Jenkins 忘记密码解决方法
Jenkins - Window下,Jenkins 忘记密码解决方法
1091 0
Jenkins - Window下,Jenkins 忘记密码解决方法
|
存储 安全 Ubuntu
解决E: 仓库 “http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo bionic InRelease” 没有数字签名问题
解决E: 仓库 “http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo bionic InRelease” 没有数字签名问题
980 0
|
SQL 数据库 Python
【Python】已完美解决:(156, b“Incorrect syntax near the keyword ‘group’.DB-Lib error message 20018, severity
【Python】已完美解决:(156, b“Incorrect syntax near the keyword ‘group’.DB-Lib error message 20018, severity
366 0
|
12月前
|
Kubernetes Cloud Native Docker
云原生入门:Kubernetes和Docker的协同之旅
【10月更文挑战第4天】在这篇文章中,我们将通过一次虚拟的旅行来探索云原生技术的核心——Kubernetes和Docker。就像乘坐一艘由Docker驱动的小船启航,随着波浪(代码示例)起伏,最终抵达由Kubernetes指挥的宏伟舰队。这不仅是一段技术上的旅程,也是理解现代云架构如何支撑数字世界的冒险。让我们扬帆起航,一探究竟!
|
机器学习/深度学习 数据采集 算法
利用机器学习进行客户细分的技术解析
【5月更文挑战第17天】运用机器学习进行客户细分是提升企业精准营销和竞争力的关键。通过聚类分析、决策树、支持向量机和神经网络等算法,可深入理解客户需求和偏好。关键步骤包括数据收集预处理、特征选择、模型训练与优化,最终实现客户群体的精准划分,助力定制个性化营销策略。随着技术发展,机器学习在客户细分中的应用将更加广泛。
|
SQL Java 数据库连接
自定义mybatis插件实现读写分离
自定义mybatis插件实现读写分离
211 0
|
前端开发 JavaScript
在Vue中,如何使用CSS过渡和动画来实现淡入淡出的效果?
在Vue中,如何使用CSS过渡和动画来实现淡入淡出的效果?
787 1
|
机器学习/深度学习 人工智能 自然语言处理
Mac部署AIGC图片生成服务——基于stable-diffusion
AIGC即人工智能内容生成,是目前非常火的一个概念。随着各种大模型的问世,通过AI来生成内容的能已经越来越强大。本文将从应用实践方面进行介绍如何在自己的PC电脑上部署一个强大的AI图片生成服务。
655 0
Mac部署AIGC图片生成服务——基于stable-diffusion
Typecho-handsome主题如何增加侧边导航栏
handsome主题在使用的过程中导航栏初始时只有首页一个导航页面,本篇文章主要讲解一下应该如何修改源代码增加多个导航栏并且为其设置子导航
483 1
Typecho-handsome主题如何增加侧边导航栏