之前公司要做自主研发的多人会议,搞了很久.记录一些东西在这里,因为涉及到的东西有点多,网上教程很多,这里只做一些记录,就不写详细的过程了.
之前自主研发了一套IM,用webrtc做了点对点的视频通话,然后客户觉得很简单,多人视频会议就直接多几个画面而已,然后就入坑了.
后台用的nodejs配合forever,就是那个大家都在用的.访问http://localhost:3000#roomName查看效果,其中roomName为进入的房间名,不同房间的用户无法互相通信,这里不再赘述.
iOS编译修改demo的过程很顺利.
网页端由于需要SSL验证,我们公司连测试的SSL证书和服务器都没提供,我就自己搭建了一个虚拟机,然后用我自己的域名,申请了一个阿里云的免费SSL证书.
如果网页端想要绕过SSL协议,通过3000端口访问页面使用摄像头,需要使用火狐浏览器46版本以下方可做到.
如图
我用的浏览器是
之后就是安卓,需要验证SSL协议,我就去虚拟机上弄nginx来配置SSL协议,之后由于自己的失误耽误了一天半时间,由于nginx在1.9.0以上版本才支持TCP,所以你安装的nginx版本一定要在1.9.0以上,我最开始为了省事,随便找了个低版本的装上去了,结果怎样都连不上,大家引以为戒,我把nginx的安装配置过程写在下面吧.
1.最重要的一点,我在这里卡了一天半,最开始用的低版本的nginx,nginx从1.9.0版本开始支持TCP,所以版本一定要大于等于这个。
2.安装nginx依赖的程序
yum install gcc;
yum install pcre-devel;
yum install zlib zlib-devel;
yum install openssl openssl-devel;
3.下载nginx
wget http://nginx.org/download/nginx-1.12.2.tar.gz
4.解压nginx
tar -zxvf nginx-1.12.2.tar.gz
5.cd nginx-1.12.2/
cd nginx-1.12.2/
6…/configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
7.make && make install
make && make install
8.cd /usr/local/nginx/sbin
cd /usr/local/nginx/sbin
9…/nginx
./nginx
10.访问IP地址如图,成功
11.cd /usr/local/nginx/conf/
cd /usr/local/nginx/conf/
12.mkdir cert
mkdir cert
13.cd cert
cd cert
14.把SSL证书扔进去,如图
15.cd …/
cd ../
16.vim nginx.conf
vim nginx.conf
17.配置文件修改如下
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
upstream web {
server 0.0.0.0:3000;
}
upstream websocket {
server 0.0.0.0:3000;
}
server {
listen 443;
server_name localhost;
ssl on;
ssl_certificate cert/cert.crt;
ssl_certificate_key cert/cert.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 50m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 SSLv2 SSLv3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location /wss {
proxy_pass http://websocket/;
proxy_read_timeout 60s;
proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'Upgrade';
}
location / {
proxy_pass http://web/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
18.cd …/sbin/
cd ../sbin/
19…/nginx -s reload
./nginx -s reload
这样nginx就配置好了.
最后来个合集
首先安卓
然后iOS
最后网页端
以上就是webrtc多人视频会议的一些杂乱记录了.