背景
基于个人的webRtc视频通讯demo,若要在外网中实现webrtc连接,则必须要有STUN服务器
搭建STUN服务器
基于github项目coturn搭建
参考资料:
- 安装coturn需要的依赖。参考文档
$ sudo yum install openssl-devel
$ sudo yum install sqlite
$ sudo yum install sqlite-devel
$ sudo yum install libevent
$ sudo yum install libevent-devel
$ sudo yum install postgresql-devel
$ sudo yum install postgresql-server
$ sudo yum install mysql-devel
$ sudo yum install mysql-server
$ sudo yum install hiredis
$ sudo yum install hiredis-devel
- 下载coturn代码,并安装依赖
cd /opt
git clone https://github.com/coturn/coturn.git #下载代码
cd coturn #进入目录
source ./configure
make -j 8
sudo make install
- 执行
make install后,找到文件turnserver.conf.default位置
- 进入该位置并拷贝一份,命名为
turnserver.conf(后续启动服务时候可以指定需要的conf文件)
cd /usr/local/etc
cp turnserver.conf.default turnserver.conf #拷贝文件,并命名为turnserver.conf
- 编辑该文件,找到以下字段并编辑
vim turnserver.conf
内网ip:输入ifconfig可获得
listening-ip=${内网IP}
relay-ip=${内网IP}
external-ip=${外网IP}
user=username:password #自己的服务器中用了 user=wfchat:wfchat
#下面两个端口均要大于10000
min-port=49152
max-port=65535
- 启动服务
turnserver -v -r ${公网IP}:3478 -a -o -c /usr/local/etc/turnserver.conf
- 查看本地是否启动成功(后续还需要在远端查看)
ps -ef|grep turn
- 关闭服务
- 关闭单个
kill [pid],如上图中的kill 169693 - 关闭全部
killall turnserver
-
查看公网中是否部署成功
- 进入测试网站查看
- 输入
stun:${公网ip}:3478,用户名和密码输入前面配置的user=wfchat:wfchat - 当成功部署时,会看到
relay与done
- 部署失败原因总结
- 云服务器没有打开对应端口(一般是3478)的防火墙,导致被拦截。需要同时打开
TCP与UDP - 启动了nginx服务(可能是冲突啥的)。这是我自己遇到的,导致浪费了很多时间排查。将nginx关闭后,再重启turnserver服务,在测试网站中检测就是成功状态了;之后再启动nginx,STUN检测也是成功的。
- 云服务器没有打开对应端口(一般是3478)的防火墙,导致被拦截。需要同时打开
给自己看的
公网的前端项目,需要/opt/testJs/webRtc-demo,运行npm run service。其中,监听的代码是npm run build之后distClient目录的内容,而不是开发的内容