5

简单地说,我将运行本地流行的 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,请写信给我。

4

0 回答 0