简单地说,我将运行本地流行的 WEBRTC 应用程序示例:github.com/webrtc/apprtc
apprtc 已安装,甚至可以在没有转服务器的情况下在本地工作(“同源策略”不允许使用 Google TURN 服务器,该服务器仅适用于apprtc.appspot.com:access-control-allow-origin:”https://apprtc .appspot.com ”)。
但我知道在真实的互联网世界(nats 和防火墙)中,我需要转服务器。所以我决定使用自己的 STUN/TURN 服务器:
code.google.com/p/coturn/
我正在尝试将我的 apprtc 与 coturn 集成:
+apprtc: http://localhost:8080/?wstls=false
+coturn: http://localhost: 3478
我有问题:
a) 我是否需要执行一些在安装指南中描述的 turnadmin 命令?或者从示例运行turnserver就足够了:my_name@my_machine:~/WEBRTC/turnserver-4.4.5.2/examples/scripts/restapi$ ./secure_relay_secret.sh
其中包含:
if [ -d examples ] ; then
cd examples
fi
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib/:/usr/local/mysql/lib/
export DYLD_LIBRARY_PATH=${DYLD_LIBRARY_PATH}:/usr/local/lib/:/usr/local/mysql/lib/
PATH="./bin/:../bin/:../../bin/:${PATH}" turnserver -v --syslog -a -L 127.0.0.1 -L ::1 -E 127.0.0.1 -E ::1 --max-bps=3000000 -f -m 3 --min-port=32355 --max-port=65535 --use-auth-secret --static-auth-secret=logen --realm=north.gov --cert=turn_server_cert.pem --pkey=turn_server_pkey.pem --log-file=stdout -q 100 -Q 300 --cipher-list=ALL $@
b)当我在浏览器中打开 localhost: 3478 时,我看到:“TURN 服务器使用 https 连接进行管理会话:rest API 的 uri 是什么?
c)在rest API中,我需要传递一些参数:用户名和密钥。够了吗?只需将额外的 -u 开关添加到 turnserver 命令就足够了吗?我需要一些额外的配置吗?
e) 如何解决“同源政策”?我不会尝试使用相同的端口和 nginx,而只是将“access-control-allow-origin”标头设置为 turnserver 响应。没有 nginx 代理怎么办?或者其他一些解决方案?
d) 还有一些其他重要的问题,运行apprtc app 和coturn server 的人应该知道吗?
编辑
对我来说,最大的问题是认为 Coturn 有自己的返回 TURN 服务器的 api 方法 - 但没有。所以需要自己做 - 在自己的 http 服务器上。以下是 python/django 中的示例:
from hashlib import sha1
import hmac
TURN_SERVER_SECRET_KEY = 'my_pass'
def get_turn_servers(request):
if 'username' not in request.GET.keys():
return HttpResponseForbidden()
unix_timestamp_tomorrow = int(time()) + (24*60*60)
new_username = str(unix_timestamp_tomorrow)+':'+request.GET['username']
hashed = hmac.new(TURN_SERVER_SECRET_KEY, new_username, sha1)
password = hashed.digest().encode("base64").rstrip('\n')
turn_udp_uri = 'turn:%s:3478?transport=udp' % settings.DOMAIN.split(':')[0] #bez portu
turn_tcp_uri = 'turn:%s:3478?transport=tcp' % settings.DOMAIN.split(':')[0]
return JsonResponse({
'username':new_username,
'password':password,
'uris':[turn_udp_uri,
turn_tcp_uri,
]
})
有用的将是组:
https://groups.google.com/forum/#!forum/turn-server-project-rfc5766-turn-server
https://groups.google.com/forum/#!forum/discuss-webrtc
如果 sombody 需要 django 代码中的 webrtc,请写信给我。