Jo-im开发:用于WebRTC的ICE中继服务器Coturn搭建

打印 上一主题 下一主题

主题 869|帖子 869|积分 2607

前言

        本人计划开发一套具备文本、语音、视频通话功能的IM demo,同时具备多人在线会议功能,按风俗大概会开源版界说名称为Duihao jo-im,本案主要用于实现语音视频通话的基础组件支持。因为我们选择基于WebRTC实现IM中语音、视频通话,因此需要搭建用于WebRTC的ICE中继服务器,我们选择coturn进行搭建。
        在 WebRTC 网络传输模块中,当遇到 NAT 之间无法打通的情况下,会使用 TURN 协议通过中转的方式实现端与端之间的通信。Coturn 就是一种开源的 STUN/TURN 服务器,它可以让你轻松地搭建一个能够在 NAT 防火墙和代理服务器背后运行的实时通信系统。Coturn 支持各种协议和技能,包括 STUN(Session Traversal Utilities for NAT)、TURN(Traversal Using Relays around NAT)和 ICE(Interactive Connectivity Establishment)。Coturn 可以用于向 WebRTC 应用步伐提供 TURN 服务器,这些应用步伐需要在 P2P 通信中转储流量。本文主要介绍 Coturn 在 Linux系统下摆设的步骤。
服务器环境

   云服务器:阿里ECS
  操纵系统:Alibaba Cloud linux
  控制面板:BT宝塔
  安装&启动coturn

        因为coturn使用到了UDP,所以要把coturn监听的UDP和TCP相干端口在安全组中打开,这个一般在云资源控制台的服务器安全组设置中。我们这次使用的是3478端口。
安装依赖

       下载libevent2发行包,通过宝塔面板直接上传到服务器,并解压。因为阿里云国内服务器的国际资源访问限制,建议您通过浏览器下载后直接上传、解压。
Release release-2.1.12-stable · libevent/libevent · GitHub
https://github.com/libevent/libevent/releases/tag/release-2.1.12-stable        您也可以使用命令进行下载(阿里云国内服务器可能会报错):
  1. wget https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz
复制代码
         使用命令解压:
  1. tar -zxvf libevent-2.1.12-stable.tar.gz
复制代码
        解压后,进入libevent2目录,执行编译安装:
  1. cd libevent-2.1.12-stable
复制代码
  1. ./configure && make && make install
复制代码
        安装过程如下:

下载coturn代码

        方法1:使用git命令下载(需要服务器中已安装git):
  1. # 国内仓库(推荐使用)
  2. git clone https://gitee.com/whatitis/coturn
复制代码
  1. # 原仓库(速度会慢一些)
  2. git clone https://github.com/coturn/coturn
复制代码
        方法2:使用wget命令下载,然后执行解压:
  1. wget https://github.com/coturn/coturn/archive/4.5.1.1.tar.gz
复制代码
  1. # 解压
  2. tar -zxvf 4.5.1.1.tar.gz
复制代码
执行coturn编译安装

  1. cd coturn
  2. ./configure --prefix=/usr/local/coturn
  3. make && make install
复制代码
设置 Coturn

        切换到 coturn 的 etc 目录,拷贝一份 turnserver.conf.default 再进行修改。宝塔面板可以直接进入 /usr/local/coturn/etc 这个目录去复制,并修改文件。
        1、进入目录
  1. cd /usr/local/coturn/etc
复制代码
        2、复制文件
  1. cp ./turnserver.conf.default ./turnserver.conf
复制代码
        3、修改设置项
  1. vi ./turnserver.conf
复制代码
        vi命令表明:终端编辑文件时先输入 i 进入编辑模式,编辑好后,按 esc 退出编辑模式,输入:wq 保存文件
        4、设置说明
        修改 turnserver.conf 文件设置内容,realm 需要指定 IP 或域名,否则无法在 WebRTC 本地库中使用,固然使用 trickle-ice 可以正常访问,但是在 WebRTC本地库中是没法正常使用的。将下方的代码直接复制到 turnserver.conf 文件末了,保存。
  1. # 指定侦听的端口。
  2. listening-port=3478
  3. # 云主机内网 IP 地址,如果没有内网IP就直接用公网IP。
  4. listening-ip=xxx.xxx.xxx.xxx
  5. # 云主机的公网 IP 地址。
  6. external-ip=xxx.xxx.xxx.xxx
  7. # 这个很重要,如果没有配置这个就服务使用中转服务。云主机的公网 IP 地址或域名。
  8. realm=xxx.xxx.xxx.xxx
  9. # 访问 STUN/TURN 服务的用户名和密码。
  10. user=admin:123456
复制代码
服务器端口开启

        在阿里云ecs服务器安全组中进行开启,需要到控制中的安全策略组或者防火墙中允许 3478、49152-65535 端口 UDP/TCP 通行(出、入),然后在宝塔面板安全中再进行开启。
        阿里云ECS安全规则如下:

        宝塔面板安全规则:


启动Coturn

        设置系统环境变量,直接打开 /etc/profile文件,在文件末端加上以下内容
  1. export PATH=$PATH:/usr/local/coturn/bin
复制代码
        执行以下命令,让系统环境变量生效
  1. source /etc/profile
复制代码
        通过设置文件执行启动命令
  1. turnserver -c /usr/local/coturn/etc/turnserver.conf
复制代码
        启动命令运行结果


检测coturn工作状态

        使用这个网址可以检测ICE服务器的工作状态,出现 relay 说明设置成功。https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
https://cloud.tencent.com/developer/tools/blog-entry?target=https%3A%2F%2Fwebrtc.github.io%2Fsamples%2Fsrc%2Fcontent%2Fpeerconnection%2Ftrickle-ice%2F&source=article&objectId=2037764
        测试的时候,STUN or TURN URI 需要加入协议头和端口号,点击 Add Server 按钮,然后再点击Gather candidates 按钮。
        如:turn:143.163.245.191:3478


将 Coturn 设置为系统服务

        把 Coturn 设置成系统服务,便于开机主动启动,就不消手动启动了。
        执行以下命令:
  1. touch /usr/lib/systemd/system/coturn.service
复制代码
        命令编辑或直接宝塔面板找到刚刚生成的服务文件,编辑:
  1. vi /usr/lib/systemd/system/coturn.service
复制代码
        编辑coturn.service 文件内容如下:
  1. [Unit]
  2. Description=Coturn Server
  3. After=network.target
  4. [Install]
  5. WantedBy=multi-user.target
  6. [Service]
  7. User=root
  8. Group=root
  9. ExecStart=/usr/local/coturn/bin/turnserver -c /usr/local/coturn/etc/turnserver.conf
  10. LimitNOFILE = 5000
复制代码
        将 coturn 设置开机启动:
  1. systemctl enable coturn
复制代码
        启动 coturn 服务:
  1. systemctl start coturn
复制代码
       重启 coturn 服务:
  1. systemctl restart coturn
复制代码
        克制 coturn 服务:
  1. systemctl stop coturn
复制代码

结束语

        本文仅对IM中语音视频通话所需要的WebRTC支持组件进行安装,要想开发具备语音、视频通话的IM,还有大量工作需要做,后续Jo-im系列文章将会连续更新,敬请关注。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

西河刘卡车医

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表