可采用Nginx+coturn 代理方案
方案名 | 适用场景 | 网络要求 |
---|---|---|
方案一 | 允许客户端访问特定的外网代理服务器 | 允许客户端访问外网的proxy s erver |
方案二 | 允许客户端通过内网代理服务器访问外网 | 允许 proxy server 访问外网 |
说明:
1.两种方案使用相同的 trtc.js 设置代理方法;
2.两种方案服务器的部署方式有差别,参考部署方案(方案 1、方案 2);
3.示意图 Nginx 服务器用于信令代理(websocket);
4.示意图 TURN 服务器用于音视频数据代理(RTCPeerconnection)。
通过 Client 中的方法设置代理服务器地址(示例):
client.setProxyServer('wss://proxy.example.com:443');
client.setTurnServer({ url: '192.168.0.110:3478', username: 'bob', credential: 'bobspassword', credentialType: 'password' });
接口参数及说明可参见文档。
Name | Type | Description |
---|---|---|
url | string | websocket 代理服务器地址,格式如:‘wss://proxy.example.com:443’ |
Name | Type | Description |
---|---|---|
config | object | TURN 服务器配置项 |
config 属性说明:
Name | Type | Attrbutes | Description |
---|---|---|---|
url | string | TURN 服务器地址 | |
username | string | <optiona> | TURN 服务器验证用户名 |
credential | string | <optiona> | TURN 服务器验证密码 |
credentialType | string | <optional> | TURN 服务器验证密码类型,默认是 ‘password’ credentialType 参考 |
实际示例:
const client = TRTC.createClient({
mode: 'videoCall',
sdkAppId,
userId,
userSig
});
client.setProxyServer('wss://proxy.example.com:443');
client.setTurnServer({ url: '192.168.0.110:3478', username: 'bob',
credential: 'bobspassword', credentialType: 'password' });
client
.join({ roomId })
.catch(error => {
console.error('进房失败 ' + error);
})
.then(() => {
console.log('进房成功');
});
说明:
1.在受限网络场景下,trtc.js 通过 Nginx 代理服务器与 TRTC 云端建立连接进行信令
交互;
2.在受限网络场景下,trtc.js 通过 TURN 服务器对音视频数据进行中转,与 TRTC 云
端进行音视频数据交互;
3.TURN 服务器的均衡,可以通过设置一组 TURN 服务器的地址,trtc.js 会在内部进
行随机选择,避免同一台服务器压力过大。
TRTC 提供开源代理服务器安装脚本,企业用户按下面方法部署代理服务器。具体步骤如
下:
参考 Nginx 服务器安装教程 在 CentOS 或 Ubuntu 系统中安装 Nginx,如果企业已有部
署 Nginx 服务,可以不用部署直接进行配置。
vi /etc/nginx/nginx.conf
server {
#对应参数 signalProxy 中的域名 proxy.trtcapi.com
server_name proxy.trtcapi.com;
#对应参数 signalProxy 中的端口 443
listen 443;
ssl on;
location /ws/ { #对应参数 signalProxy 中的"ws"
proxy_pass https://qcloud.rtc.qq.com:8687/; # TRTC 的服务器
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
#域名对应的 SSL 证书,HTTPS 用,用户自行申请
ssl_certificate ./crt/1_proxy.trtcapi.com_bundle.crt;
ssl_certificate_key ./crt/2_proxy.trtcapi.com.key;
}
sudo nginx -s reload
建议在 CentOS 或 Ubuntu 上安装部署 coturn。
vi /etc/turnserver.conf
//#指定中转服务器监听端口
listening-port=3478
//#本机的 ip
listening-ip=172.27.0.13
//#在外网的 ip 地址
external-ip=148.70.115.45
//#可以分配给客户端连接使用最小端口和最大端口
min-port=59900
max-port=60000
//#面向内网客户端的用户名和密码
user=myname:12345678
//#服务名称
server-name=tencent_webrtc
realm=tencent_webrtc
//#证书生成参考下面说明
cert=../etc/turnserver/turn_server_cert.pem
pkey=../etc/turnserver/turn_server_pkey.pem
//#处理数据中转的线程个数
relay-threads=10
simple-log
fingerprint
lt-cred-mech
no-loopback-peers
no-multicast-peers
no-tcp
no-tls
no-cli
no-tlsv1
no-tlsv1_1
mobility
turnserver -c /etc/turnserver.conf
打开 turn 服务器的 3478 和( min-port ~ max-port )之间端口
确认公司防火墙对部署的 nginx 和 TURN 服务器 IP 限制访问解除。
和方案一区别:在 external-ip 上填服务器在内网的地址。
//#指定中转服务器监听端口
listening-port=3478
//#本机的 ip
listening-ip=172.27.0.13
//#服务器在内网的 ip
external-ip=148.70.115.45
//#可以分配给客户端连接使用最小端口和最大端口
min-port=59000
max-port=60000
//#面向内网客户端的用户名和密码
user=myname:12345678
//#服务名称
server-name=tencent_webrtc19. realm=tencent_webrtc
//#证书生成参考说明
cert=../etc/turnserver/turn_server_cert.pem
pkey=../etc/turnserver/turn_server_pkey.pem
//#处理数据中转的线程个数
relay-threads=10
simple-log
fingerprint
lt-cred-mech
no-loopback-peers
no-multicast-peers
no-tcp
no-tls
no-cli
no-tlsv1
no-tlsv1_1
mobility
turnserver -c /etc/turnserver.conf
打开 turn 服务器的 3478 和(min-port - max-port)之间端口。
确认内网部署的 Nginx 和 TURN 服务器,可以访问外网。
确认内网部署的 Nginx 和 TURN 服务器,可以访问外网。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。