TRTC web端内网环境怎么设置代理?
可采用Nginx coturn 代理方案
方案名 | 适用场景 | 网络要求 |
---|---|---|
方案一 | 允许客户端访问特定的外网代理服务器 | 允许客户端访问外网的proxy s erver |
方案二 | 允许客户端通过内网代理服务器访问外网 | 允许 proxy server 访问外网 |
方案一示意图
方案二示意图
说明:
1.两种方案使用相同的 trtc.js 设置代理方法;
2.两种方案服务器的部署方式有差别,参考部署方案(方案 1、方案 2);
3.示意图 Nginx 服务器用于信令代理(websocket);
4.示意图 TURN 服务器用于音视频数据代理(RTCPeerconnection)。
trtc.js 设置代理的接口
通过 Client 中的方法设置代理服务器地址(示例):
代码语言:txt复制client.setProxyServer('wss://proxy.example.com:443');
client.setTurnServer({ url: '192.168.0.110:3478', username: 'bob', credential: 'bobspassword', credentialType: 'password' });
接口参数及说明可参见文档。
setProxyServer(url)
- 设置代理服务器
- 该方法适用于企业自己部署代理服务器,如 ngnix coturn 方案。 Note: 该方法需要在 join() 之前调用。
Name | Type | Description |
---|---|---|
url | string | websocket 代理服务器地址,格式如:‘wss://proxy.example.com:443’ |
setTurnServer(config)
- 设置 TURN 服务器
- 该方法配合 setProxyServer() 使用,适用于企业自己部署代理服务器和 TURN 中转。 Note: 该方法需要在 join() 之前调用。
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 参考 |
实际示例:
代码语言:txt复制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 提供开源代理服务器安装脚本,企业用户按下面方法部署代理服务器。具体步骤如
下:
方案一
1.部署 Nginx 服务器
参考 Nginx 服务器安装教程 在 CentOS 或 Ubuntu 系统中安装 Nginx,如果企业已有部
署 Nginx 服务,可以不用部署直接进行配置。
2.配置 Nginx 服务器
代码语言:txt复制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;
}
3.执行重新加载 Nginx
代码语言:txt复制sudo nginx -s reload
4.部署 TURN 服务器
建议在 CentOS 或 Ubuntu 上安装部署 coturn。
5.TURN 服务器配置( /etc/turnserver.conf )
代码语言:txt复制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
6.启动 TURN 服务
代码语言:txt复制turnserver -c /etc/turnserver.conf
7.服务器端口开启
打开 turn 服务器的 3478 和( min-port ~ max-port )之间端口
8.公司防火墙设置
确认公司防火墙对部署的 nginx 和 TURN 服务器 IP 限制访问解除。
方案二
1.部署 Nginx 服务器(同方案一)
2.配置 Nginx 服务器(同方案一)
3.执行重新加载 nginx(同方案一)
4.部署 TURN 服务器(同方案一)
5.TURN 服务器配置( /etc/turnserver.conf )
和方案一区别:在 external-ip 上填服务器在内网的地址。
代码语言:txt复制//#指定中转服务器监听端口
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
6.启动服务(turnserver.conf)
代码语言:txt复制turnserver -c /etc/turnserver.conf
7.turn 服务器端口开启
打开 turn 服务器的 3478 和(min-port - max-port)之间端口。
8.公司防火墙设置
确认内网部署的 Nginx 和 TURN 服务器,可以访问外网。
确认内网部署的 Nginx 和 TURN 服务器,可以访问外网。