
WebRTC多方通信的架构
coturn是一个stun和turn服务端
npm install coturn
turnserver找到配置文件
find /usr -name turnserver.conf我这的路径为
/usr/share/doc/coturn/etc/turnserver.conf
生成证书
openssl req -x509 -newkey rsa:2048 -keyout /usr/local/etc/turn_server_pkey.pem -out /usr/local/etc/turn_server_cert.pem -days 99999 -nodes在配置文件末尾加入一下内容
# 监听的端口
listening-port=3478
# 监听的内网IP
listening-ip=0.0.0.0
# 监听的外网IP
external-ip=49.4.27.42
# 设置账号密码
user=psvmc:123456
cli-password=123456
#UDP 最小端口和最大端口
min-port=40000
max-port=60000
# 证书
cert=/usr/local/etc/turn_server_cert.pem
pkey=/usr/local/etc/turn_server_pkey.pem内网地址可以通过
ifconfig找到eth0对应的IP

指定配置文件启动服务
killall -9 turnserver
turnserver -v -r 49.4.27.42 -a -o -c /usr/share/doc/coturn/etc/turnserver.conf我们进入这个地址测试
https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
测试stun的时候不需要输入账号密码,只需要输入第一行,以stun:开头
stun:49.4.27.42:3478
需要输入turn地址,以turn:开头,以及账号密码
turn:49.4.27.42:3478 psvmc 123456
如图

注意
只要出现Done即为成功,下面提示的fail不用在意。
https://www.npmjs.com/package/stun
npm i stun测试
使用谷歌的stun服务器
const stun = require('stun');
async function getIp() {
const res = await stun.request('stun.l.google.com:19302');
console.log('your ip', res.getXorAddress().address);
}
getIp();可以用这个网址去测试stun和turn的有效性: https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/