美文网首页
WebRTC服务端环境搭建

WebRTC服务端环境搭建

作者: private_object | 来源:发表于2020-09-07 16:07 被阅读0次

    安装依赖

         $ 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

    git clone https://github.com/coturn/coturn 
    cd coturn 
    ./configure 
    make 
    sudo make install
    

    3.3 配置相关
    查看是否安装成功

    ## 如果能够找到就说明已经安装成功
    which turnserver
    

    配置 coturn的conf文件

    4.1、创建用户
    sudo turnadmin -a -u 用户名 -p 密码 -r 可以随便写(一般写stun.xxx.cn)
    //示例
    sudo turnadmin -a -u testuser -p testpassword -r stun.test.cn
    
    
    4.2、生成证书
    sudo openssl req -x509 -newkey rsa:2048 -keyout /etc/turn_server_pkey.pem -out /etc/turn_server_cert.pem -days 99999 -nodes 
    
    
    4.3、新建turnserver.conf
    sudo cp /usr/local/etc/turnserver.conf.default  /usr/local/etc/turnserver.conf
    
    
    4.4、配置turnserver.conf

    listening-ip与relay-ip采用内网ip,external-ip是外网的ip

    relay-device=eth0   #与前ifconfig查到的网卡名称一致
    listening-ip=172.18.77.60    #内网IP
    listening-port=3478
    tls-listening-port=5349
    relay-ip=172.18.77.60
    external-ip=47.107.110.xxx    #公网IP
    relay-threads=50
    lt-cred-mech
    cert=/etc/turn_server_cert.pem
    pkey=/etc/turn_server_pkey.pem
    pidfile=”/var/run/turnserver.pid”
    min-port=49152
    max-port=65535
    user=zjf:123456    #用户名密码,创建IceServer时用
    

    其他

    #(必选)监听端口可以不设置会默认的使用3478
    listening-port=3478
    #(必选)监听的网卡
    listening-device=eth0
    #(必选)listening-ip,注意必须是你的内网IP地址
    listening-ip=172.17.0.12
    #(必选)external-ip,注意必须使用你的外网IP地址(云主机的公网IP地址)
    external-ip=18.33.65.98
    #(必选)设置用户名及密码
    user=testuser:testpassword
    #(必选)一般和你创建用户名和密码是填写的-r后面的一样
    realm=stun.test.cn
    
    

    注意:如果机器上有多块网卡,注意listening-ip与listening-device要匹配,参考下图红色方框部分:

    image

    五、启动 stun/turn 服务

    sudo turnserver  -o -a -f -b /usr/local/etc/turnuserdb.conf
    

    一定要在阿里云后台的安全组规则中添加用到的端口,包括3478端口的tcp/udp,udp一定要配置

    image

    如果不是阿里云的话就用命令行打开相关端口,然后重启防火墙即可。

    添加
    firewall-cmd --zone=public --add-port=3478/udp --permanent
    firewall-cmd --zone=public --add-port=3478/tcp --permanent
    重新载入
    firewall-cmd --reload
    重启防火墙
    systemctl restart firewalld
    
    

    在浏览器中打开47.107.110.xxx:3478,如果打开之后是这个页面说明已经配置成功了

    image

    ICE测试

    https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
    打开上面的测试地址,分别测试stun和turn服务器,只有relay地址回来的是你的ip才算穿透成功。

    添加stun和turn服务器,然后点击

    image

    按钮,开始穿透,然后看一下
    只有relay地址回来的是不是你的IP。

    image image image.png

    结束语

    以上步骤都是经过本人自己腾讯云服务器部署,并在Android手机端验证,分别使用电信卡和移动卡的两部安卓手机可以直接视频聊天的。因为turn 包含了stun的功能. 所以只需要启用turn服务即可. 简述一下webrtc的P2P穿透部分是由libjingle实现的. 步骤顺序大概是这样的:

    1. 尝试直连.
    2. 通过stun服务器进行穿透
    3. 无法穿透则通过turn服务器中转.

    相关文章

      网友评论

          本文标题:WebRTC服务端环境搭建

          本文链接:https://www.haomeiwen.com/subject/qxskektx.html