首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于appr.tc的本地安卓应用程序

用于appr.tc的本地安卓应用程序
EN

Stack Overflow用户
提问于 2016-11-05 01:54:29
回答 1查看 2.5K关注 0票数 3

从我几个星期以来,我一直在尝试通过使用apprtc在本地安卓应用程序(https://github.com/njovy/AppRTCDemo)和浏览器之间建立一个网络会话。当使用appr.tc作为房间服务器url时,该应用程序工作得很好。我已经在Ubuntu上建立了学徒项目,我可以在Ubuntu机器上的浏览器和我的移动设备的浏览器之间创建一个会议。但是,当我试图在ubuntu上的浏览器和应用程序之间建立连接时,我总是会收到以下错误:

代码语言:javascript
复制
Room IO error: java.io.IOException:
Non-200 response when requesting 
TURN server from https://
networktraversal.googleapis.com/
v1alpha/iceconfig?key=none : HTTP/
1.1 400 Bad Request

错误-截图

错误消息中提到的URL在src/app_engine/constants.py (https://github.com/webrtc/apprtc/blob/master/src/app_engine/constants.py)中定义。但我不知道该怎么处理

代码语言:javascript
复制
# TODO(jansson): Remove once AppRTCDemo on iOS supports ICE_SERVER.
TURN_BASE_URL = 'https://computeengineondemand.appspot.com'
TURN_URL_TEMPLATE = '%s/turn?username=%s&key=%s'
CEOD_KEY = '4080218913'

ICE_SERVER_BASE_URL = 'https://networktraversal.googleapis.com'
ICE_SERVER_URL_TEMPLATE = '%s/v1alpha/iceconfig?key=%s'
ICE_SERVER_API_KEY = os.environ.get('ICE_SERVER_API_KEY')

CALLSTATS_PARAMS = {
  'appId': os.environ.get('CALLSTATS_APP_ID'),
  'appSecret': os.environ.get('CALLSTATS_APP_SECRET')
}

到目前为止我做了什么?(这几乎是学徒https://github.com/webrtc/apprtc#deployment的部署过程)

  1. 从git下载了最新版本的apprtc
  2. 已安装npm、nodejs和grunt
  3. 使用grunt build构建源
  4. 下载、安装和配置对撞机(对撞机运行于rtc:8089)
    • 4.1我不得不在工作区/src/对撞机中更改我的main.go。 from: var roomSrv = flag.String(" room -server",“hxxps://appl.tc”,“房间服务器的起源”) to: var roomSrv = flag.String(" room -server“、"hxxp://rtc”、“房间服务器的起源”)
    • 4.2还将WS_INSTANCE_HOST_KEY改为对撞机,在src/app_engine/constants.py中采用rtc:8089。

  1. 我安装了CoTurn,并添加了一个看起来像 监听端口=3478 监听-ip=192.168.178.20 user=rtc:webrtc cert=/home/rtc/work/src/collider/cert/cert.pem pkey=/home/rtc/work/src/对撞机/cert/key.pem

对撞机运行在192.168.178.20:8089 (或rtc:8089),旋转服务器运行在192.168.178.20:3478。在turnserver.conf中定义的凭据:用户名= rtc,密码= webrtc

设置之后,我将requestIceServers-方法添加到src/web_app/js/util.js (https://github.com/webrtc/apprtc/blob/master/src/web_app/js/util.js)中。

代码语言:javascript
复制
function requestIceServers(iceServerRequestUrl, iceTransports) {
  return new Promise(function(resolve, reject) {
    var servers = [{
        credential: "webrtc",
        username: "rtc",
        urls: [
          "turn:192.168.178.20:3478?transport=udp",
          "turn:192.168.178.20:3478?transport=tcp"
        ]
    }];
    resolve(servers);
  });
}

并对标准方法进行了评述:

代码语言:javascript
复制
//function requestIceServers(iceServerRequestUrl, iceTransports) {
  //return new Promise(function(resolve, reject) {
    //sendAsyncUrlRequest('POST', iceServerRequestUrl).then(function(response) {
      //var iceServerRequestResponse = parseJSON(response);
      //if (!iceServerRequestResponse) {
        //reject(Error('Error parsing response JSON: ' + response));
        //return;
      //}
      //if (iceTransports !== '') {
        //filterIceServersUrls(iceServerRequestResponse, iceTransports);
      //}
      //trace('Retrieved ICE server information.');
      //resolve(iceServerRequestResponse.iceServers);
    //}).catch(function(error) {
      //reject(Error('ICE server request error: ' + error.message));
      //return;
    //});
  //});
//}

当我现在启动GAE时,我的旋转服务器和对撞机

代码语言:javascript
复制
python ~/google_appengine/dev_appserver.py ~/google_projects/apprtc-master/out/app_engine --host=0.0.0.0
sudo turnserver -a -r 192.168.178.20
$GOPATH/bin/collidermain -port=8089 -tls=false

我能够在两个浏览器客户端之间建立一个连接(从对撞机终端登录)

代码语言:javascript
复制
rtc@rtc:~$ $GOPATH/bin/collidermain -port=8089 -tls=false
2016/11/05 00:07:32 Starting collider: tls = false, port = 8089, room-server=http://rtc
2016/11/05 00:10:24 Created room stackoverflow
2016/11/05 00:10:24 Added client 97869213 to room stackoverflow
2016/11/05 00:10:24 Client 97869213 registered in room stackoverflow
2016/11/05 00:10:57 Added client 96368166 to room stackoverflow
2016/11/05 00:10:57 Client 96368166 registered in room stackoverflow
2016/11/05 00:10:57 Sent queued messages from 97869213 to 96368166
2016/11/05 00:11:09 Deregistered client 96368166 from room stackoverflow
2016/11/05 00:11:09 Removed client 96368166 from room stackoverflow
2016/11/05 00:11:19 Removing client 96368166 from room stackoverflow due to timeout

当我现在尝试通过本地应用程序连接时,我总是收到上面提到的错误。

经过调查,我在git上找到了以下链接,但对我没有多大帮助:https://github.com/webrtc/apprtc/issues/366

因此,我决定在constants.py (https://github.com/webrtc/apprtc/blob/master/src/app_engine/constants.py)中四处游玩,并找到了一个可以覆盖转身/眩晕服务器的地方。

代码语言:javascript
复制
# Turn/Stun server override. This allows AppRTC to connect to turn servers
# directly rather than retrieving them from an ICE server provider.
TURN_SERVER_OVERRIDE = []
# Enable by uncomment below and comment out above, then specify turn and stun
# servers below.
#TURN_SERVER_OVERRIDE = [
#  {
#    "urls": [
#      "turn:192.168.178.20:3478?transport=udp",
#      "turn:192.168.178.20:3478?transport=tcp"
#    ],
#    "username": "rtc",
#    "credential": "webrtc"
#  },
#  {
#    "urls": [
#      "stun:stun.l.google.com:19305"
#    ]
#  }
#]

因此,我注释了TURN_SERVER_OVERRIDE = [] out,注释了其他行,并填写了在turnserver.conf中配置的旋转服务器和凭据的IP

盖伊认识到,有一个新的要求即将到来的应用程序。它记录

代码语言:javascript
复制
INFO     2016-11-05 00:06:31,649 apprtc.py:408] Added client 50600142 in room stackoverflow, retries = 0
INFO     2016-11-05 00:06:31,650 apprtc.py:92] Applying media constraints: {'video': True, 'audio': True}
WARNING  2016-11-05 00:06:31,653 apprtc.py:136] Invalid or no value returned from memcache, using fallback: null
INFO     2016-11-05 00:06:31,653 apprtc.py:551] User 50600142 joined room stackoverflow
INFO     2016-11-05 00:06:31,653 apprtc.py:552] Room stackoverflow has state ['50600142']
INFO     2016-11-05 00:06:31,658 module.py:788] default: "POST /join/stackoverflow?wstls=false HTTP/1.1" 200 1175

但仍然抛出同样的错误。

由于这样做并不有效,所以我尝试将转身服务器插入到ICE_SERVER_BASE_URL中(仍然在constants.py中)。

代码语言:javascript
复制
ICE_SERVER_BASE_URL = 'https://networktraversal.googleapis.com'
ICE_SERVER_URL_TEMPLATE = '%s/v1alpha/iceconfig?key=%s'
ICE_SERVER_API_KEY = os.environ.get('ICE_SERVER_API_KEY')

变到

代码语言:javascript
复制
ICE_SERVER_BASE_URL = '192.168.178.20:3478'
ICE_SERVER_URL_TEMPLATE = ''
ICE_SERVER_API_KEY = os.environ.get('ICE_SERVER_API_KEY')

这将错误更改为:

代码语言:javascript
复制
Connection error
Non-200 response to POST to URL:
http://rtc:8080/join/stackoverflow=wstls=false : HTTP/1.1 500 Internal 
Server Error

错误屏幕截图2

但是现在我已经不能在浏览器上打开主机了。所以我想这可能是完全错误的。

  • 你知道如何使用本地应用程序建立会议吗?
  • 如何绕过可能导致错误的networktraversal.googleapis.com URL?
  • 我必须绕开它吗?

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2019-04-09 05:53:31

将它们全部设置为空字符串:

代码语言:javascript
复制
ICE_SERVER_BASE_URL = ''
ICE_SERVER_URL_TEMPLATE = ''
ICE_SERVER_API_KEY = ''

你设置了collinder url吗?您的旋转服务器应该使用oauth配置。检查所有的日志: apprtc,铬控制台日志,旋转服务器日志,collinder日志。了解更多详细信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40434034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档