目录
前言
在另一篇博客中已经实现了远程视频聊天,然而这种方式只能运行在本地或者https服务下,因为navigator.mediaDevices.getUserMedia需要运行在安全模式下,所以这篇文章将对视频聊天做一个改进,达到真正的远程聊天功能
之前的案例:使用JS+socket.io+WebRTC+nodejs+express搭建一个简易版远程视频聊天
搭建前端https访问:
搭建https的第一步得有一个服务器,相关的配置说明在我另一篇文章有提到
案例:本地项目上线流程
然后,购买域名并备案,第一次要久一点,大概20天左右
在域名界面进行域名解析和ssl证书下载(后续配置https)
将域名绑定服务器外网ip
域名界面点进管理,购买免费证书并下载,这里用的是Nginx
把下载的key和pem放在Nginx根目录下,部署视频聊天前端文件夹Video至根目录,打开conf文件夹下的nginx.conf文件并编辑
在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的请求错误
然后把请求地址改为https即可访问
最后我们看看效果
由于电脑上的摄像头无法被两个页面调用,所以我用手机和电脑进行远程视频
电脑端的录屏
手机端录屏
总结:由于视频聊天涉及隐私问题,自己试着研究一下还可以,所以就不放案例试用链接,之前的视频聊天案例