Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说COTURN服务器使用,希望能够帮助你!!!。
coturn是作为一个STUN/TURN来使用,其中STUN是用于P2P,而TURN是用于中继转发。
安装形式有两种:
方式1:
直接在网上下载适合系统版本的编译好的安装包安装,包地址:
http://turnserver.open-sys.org/downloads
安装方法,参考:
COTURN服务器使用
最后的穿透服务器安装。
方式2:
下载相应源码,自己编译安装。
源码地址:
https://github.com/coturn/coturn.git
安装方法:
git clone到本地;
在coturn目录中执行
./configure
sudo make all
我使用的是第二种安装方法,在执行完make all之后,会在coturn目录中出现bin目录。
在bin目录中,会存在turnadmin\turnserver\turn_uclient等可执行文件。
可以通过执行man turnserver等查看相应的使用。
在example目录下,有一些配置、密钥以及客户端等的使用例程。
进入coturn/bin目录
1、使用turnadmin添加用户及计算密码
turnadmin的使用方法,可以通过man查看。如果查看turnadmin属性,则会发现turnadmin是一个链接,指向turnserver。
1)添加lt-cred-mech用户:
./turnadmin -a -u demo -p 4080218913 -r demo
其中的参数含义
-a: 表示使用lt-cred-mech方式连接
-u:用户名
-p:密码
-r :realm 域。自己试了,似乎随便写,没啥影响。
2)添加admins用户,应该是使用https时使用吧
./turnadmin -A -u demo -p 4080218913 -r demo
其中的参数含义同上,
-A:表示admin用户。
3)根据用户名、密码、realm计算出值
./turnadmin -k -u demo -p 4080218913 -r demo
此时会出来一串数字。
XXXXXXX
2、配置turnserver.conf文件
可以将example中的turnserver.conf文件拷贝到bin目录下。
将turnserver.conf文件按照如下配置编辑。
#如果多网卡,记得此处设置为和你所用监听的IP相对应的eth
listening-device=eth0
listening-port=3478
relay-device=eth0
min-port=59000
max-port=65000
Verbose
fingerprint
#webrtc需要使用此选项
lt-cred-mech
use-auth-secret
static-auth-secret=4080218913
#之前turnadmin中-r参数的值,此处要对应
realm=demo
stale-nonce
#可以添加用户名和密码
user=demo:4080218913
#测试期间可以使用example/etc中的pem,自己计算的话需要用到openssl,方法为:
#sudo openssl req -x509 -newkey rsa:2048 -keyout /etc/turn_server_pkey.pem -out /etc/turn_server_cert.pem -days 99999 -nodes
#填写pem目录即可,如
cert=~/coturn/example/etc/turn_server_cert.pem
pkey==~/coturn/example/etc/turn_server_pkey.pem
no-loopback-peers
no-multicast-peers
mobility
no-cli
#各项参数含义,可以看turnserver.conf中的说明。
保存之后退出。
sudo turnserver 启动即可
turnserver会载入当前目录中的配置文件。
此处参考
http://www.jianshu.com/p/c55ecf5a3fcf
中的代码。
最后的nginx配置,也按照其中的来就可以。
1、修改apprtc.debug.js
参考
https://github.com/webrtc/apprtc
最后面的第6步。
直接修改
apprtc/out/app_engine/js/apprtc.debug.js中的
requestIceServers function
修改为
#其中的IP需要和你turnserver.conf中设置的IP一样或者turnserver.conf文件中设置的网卡的IP对应!
function requestIceServers(iceServerRequestUrl, iceTransports) {
return new Promise(function(resolve, reject) {
var servers = [{
credential: "turnPassword",
username: "turnUser",
urls: [
"turn:yourTURNIP:3478?transport=udp",
"turn:yourTURNIP:3478?transport=tcp"
]
},{
urls:["STUN:yourSTUNIP:3478"]
}];
resolve(servers);
});
}
保存退出。
2、修改constants.py
修改apprtc/out/app_enginee/constants.py中的TURN_BASE_URL值为
TURN_BASE_URL=’your ip:your nginx port’
按照COTURN服务器使用中房间服务器的方式,重新启动apprtc。
记得先要把之前的房间服务器进程关掉。
都修改完之后,按照
http://www.jianshu.com/p/c55ecf5a3fcf
中的方式配置好nginx。访问配置的端口即可!
启动nginx
coturn就可以提供STUN/TURN服务了。
利用firefox或者chrome(如果是http通信,则只能用firefox)浏览器登录房间服务器,同时打开firefox的设置中,开发者选项-》控制台,查看登录房间过程中,web和服务器交互的信息。
找到candidates,查看其中是否有内网IP及端口等信息,如果服务器是部署在公网,则还还应该可以查看到公网IP及端口信息。
如果candidates都有以上信息,则表明coturn服务器运行正常!
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章