Search code examples
webrtcapprtc

Anyone success in config collinder for apprtc


My question in github: https://github.com/webrtc/apprtc/issues/615 I can't config apprtc for signal server, just call video ok via wifi but via mobile network has no luck. Please view my config, I can't find any example for constands.py in anywhere. Here is my config:

ICE_SERVER_OVERRIDE = [
  {
    "urls": [
      "stun:stun.l.google.com:19302"
    ]
  },
  {
    "urls": [
      "turn:my_ip_address:3478?transport=udp"
    ],
    "username": "my_account",
    "credential": "password"
  },
  {
    "urls": [
      "turn:my_ip_address:3479?transport=udp"
    ],
    "username": "my_account",
    "credential": "password"
  }
]

TURN_SERVER_OVERRIDE = [
  {
    "urls": "turn:my_ip_address:3478",
    "username": "my_account",
    "credential": "password"
  },
  {
    "urls": "stun:stun.l.google.com:19302"
  }
]

TURN_BASE_URL = 'http://my_url.com'
TURN_URL_TEMPLATE = '%s/turn?username=%s&key=%s'
CEOD_KEY = ''

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

Dictionary keys in the collider instance info constant.

WSS_INSTANCE_HOST_KEY = 'my_ip_address:8443'
WSS_INSTANCE_NAME_KEY = 'wsserver-std'
WSS_INSTANCE_ZONE_KEY = 'us-central1-a'
WSS_INSTANCES = [{
    WSS_INSTANCE_HOST_KEY: 'my_ip_address:8443',
    WSS_INSTANCE_NAME_KEY: 'wsserver-std',
    WSS_INSTANCE_ZONE_KEY: 'us-central1-a'
}, {
    WSS_INSTANCE_HOST_KEY: 'apprtc-ws-2.webrtc.org:443',
    WSS_INSTANCE_NAME_KEY: 'wsserver-std-2',
    WSS_INSTANCE_ZONE_KEY: 'us-central1-f'
}]

WSS_HOST_PORT_PAIRS = [ins[WSS_INSTANCE_HOST_KEY]


When I run it, my apprtc return error:
WebSocket open error: WebSocket error.
So, I don't understand what keys mean:
WSS_INSTANCE_HOST_KEY: 'my_ip_address:8443',
WSS_INSTANCE_NAME_KEY: 'wsserver-std',
WSS_INSTANCE_ZONE_KEY: 'us-central1-a'

When I change to default in original code, it work but ONLY via Wifi, No mobile network working, I also run turnserver in port 3478 and collinder in 8443 with pem files. So any one can tell me how to test collinder and turnserver config successfully for mobile connecting?


Solution

  • I found the error during two years ago to config apprtc: Just config ICE servers like this:

    ICE_SERVER_OVERRIDE = [
        {
            "urls": [
            "stun:stun.l.google.com:19302"
            ]
        },
        {
            "urls": [
            "turn:my_ip_address:3478?transport=udp"
            ],
            "username": "my_account",
            "credential": "password"
        },
        {
            "urls": [
            "turn:my_ip_address:3479?transport=udp"
            ],
            "username": "my_account",
            "credential": "password"
        }
    ]
    ICE_SERVER_BASE_URL = 'http://my_url.com'
    ICE_SERVER_URL_TEMPLATE = '%s/v1alpha/iceconfig?key=%s'
    ICE_SERVER_API_KEY = os.environ.get('ICE_SERVER_API_KEY')
    

    and in /etc/turnserver.conf

    cert=/root/cert.pem
    pkey=/root/key.pem
    
    listening-port=3478
    tls-listening-port=5349
    
    listening-ip=my_ip_address
    
    relay-ip=my_ip_address
    external-ip=my_ip_address
    
    realm=my_web_address
    server-name=my_web_address
    
    #lt-cred-mech
    userdb=/etc/turnuserdb.conf
    oauth
    user=my_account:my_password
    no-stdout-log
    

    Reson of error is: when I config "lt-cred-mech" authentication, It was failed.

    So, I change it to "oauth": It Worked.

    test Turn Server (Collinder) in this website:

    https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

    # The result very fast (like sturn url of Google):
    0.005   1   host    3868393361  udp 192.168.1.157   35353   126 | 30 | 255
    0.006   1   host    891932622   udp xxxx:xxxx:12c7:xxxx:247e:xxxx:3c18:xxxx 51606   126 | 40 | 255
    0.009   1   srflx   842163049   udp aa.bb.cc.dd 3341    100 | 30 | 255
    0.062   1   relay   3031532034  udp my_turn_ip_address  62030   2 | 30 | 255
    0.105   Done
    0.109