Giter Site home page Giter Site logo

netluxe / apprtc Goto Github PK

View Code? Open in Web Editor NEW

This project forked from webrtc/apprtc

0.0 1.0 0.0 4.01 MB

The video chat demo app based on WebRTC

Home Page: https://appr.tc

License: BSD 3-Clause "New" or "Revised" License

JavaScript 54.95% Python 27.98% Shell 0.25% Go 10.45% CSS 1.74% HTML 4.63%

apprtc's Introduction

Build Status

AppRTC Demo Code

Development

Detailed information on developing in the webrtc github repo can be found in the WebRTC GitHub repo developer's guide.

The development AppRTC server can be accessed by visiting http://localhost:8080.

Running AppRTC locally requires Google App Engine SDK for Python, Node.js and Grunt.

Follow the instructions on Node.js website and on Grunt website to install them.

When Node.js and Grunt are available you can install the required dependencies running npm install from the project root folder.

Before you start the AppRTC dev server and everytime you update the source code you need to recompile the App Engine package by running grunt build.

Start the AppRTC dev server from the out/app_engine directory by running the Google App Engine SDK dev server,

<path to sdk>/dev_appserver.py ./out/app_engine

Then navigate to http://localhost:8080 in your browser (given it's on the same machine).

Testing

You can run all tests by running grunt.

To run only the Python tests you can call,

grunt runPythonTests

Deployment

Instructions were performed on Ubuntu 14.04 using Python 2.7.6 and Go 1.6.3.

  1. Clone the AppRTC repository
  2. Do all the steps in the Collider instructions then continue on step 3.
  3. Install and start a Coturn TURN server according to the instructions on the project page.
  4. Open src/app_engine/constants.py and do the following:

Collider

  • If using Google Cloud Engine VM's for Collider
    • Change WSS_INSTANCE_HOST_KEY WSS_, WSS_INSTANCE_NAME_KEY and WSS_INSTANCE_ZONE_KEY to corresponding values for your VM instances which can be found in the Google Cloud Engine management console.
  • Else if using other VM hosting solution
    • Change WSS_INSTANCE_HOST_KEY to the hostname and port Collider is listening too, e.g. localhost:8089 or otherHost:443.

TURN/STUN

  • If using TURN and STUN servers directly

    • Comment out TURN_SERVER_OVERRIDE = [] and then uncomment TURN_SERVER_OVERRIDE = [ { "urls":...] three lines below and fill your TURN server details, e.g.
    TURN_SERVER_OVERRIDE = [
      {
        "urls": [
          "turn:hostnameForYourTurnServer:19305?transport=udp",
          "turn:hostnameForYourTurnServer:19305?transport=tcp"
        ],
        "username": "TurnServerUsername",
        "credential": "TurnServerCredentials"
      },
      {
        "urls": [
          "stun:hostnameForYourStunServer:19302"
        ]
      }
    ]
  • Else if using ICE Server provider [1]

    • Change ICE_SERVER_BASE_URL to your ICE server provider host.
    • Change ICE_SERVER_URL_TEMPLATE to a path or empty string depending if your ICE server provider has a specific URL path or not.
    • Change ICE_SERVER_API_KEY to an API key or empty string depending if your ICE server provider requires an API key to access it or not.
    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')

8. Build AppRTC using grunt build then deploy/run:

  • If running locally using the Google App Engine dev server (dev/testing purposes)

    • Start it using dev appserver provided by the Google app engine SDK pathToGcloudSDK/platform/google_appengine/dev_appserver.py out/app_engine/.
  • Else if running on Google App Engine in the Google Cloud (production)

9. Open a WebRTC enabled browser and navigate to http://localhost:8080 or https://[YOUR_VERSION_ID]-dot-[YOUR_PROJECT_ID] (append ?wstls=false to the URL if you have TLS disabled on Collider for dev/testing purposes).

Advanced Topics

Enabling Local Logging

Note that logging is automatically enabled when running on Google App Engine using an implicit service account.

By default, logging to a BigQuery from the development server is disabled. Log information is presented on the console. Unless you are modifying the analytics API you will not need to enable remote logging.

Logging to BigQuery when running LOCALLY requires a secrets.json containing Service Account credentials to a Google Developer project where BigQuery is enabled. DO NOT COMMIT secrets.json TO THE REPOSITORY.

To generate a secrets.json file in the Google Developers Console for your project:

  1. Go to the project page.
  2. Under APIs & auth select Credentials.
  3. Confirm a Service Account already exists or create it by selecting Create new Client ID.
  4. Select Generate new JSON key from the Service Account area to create and download JSON credentials.
  5. Rename the downloaded file to secrets.json and place in the directory containing analytics.py.

When the Analytics class detects that AppRTC is running locally, all data is logged to analytics table in the dev dataset. You can bootstrap the dev dataset by following the instructions in the Bootstrapping/Updating BigQuery.

BigQuery

When running on App Engine the Analytics class will log to analytics table in the prod dataset for whatever project is defined in app.yaml.

Schema

bigquery/analytics_schema.json contains the fields used in the BigQuery table. New fields can be added to the schema and the table updated. However, fields cannot be renamed or removed. Caution should be taken when updating the production table as reverting schema updates is difficult.

Update the BigQuery table from the schema by running,

bq update -t prod.analytics bigquery/analytics_schema.json

Bootstrapping

Initialize the required BigQuery datasets and tables with the following,

bq mk prod
bq mk -t prod.analytics bigquery/analytics_schema.json

[1] ICE Server provider AppRTC by default uses an ICE server provider to get TURN servers. Previously we used a compute engine on demand service (it created TURN server instances on demand in a region near the connecting users and stored them in shared memory) and web server with a REST API described in draft-uberti-rtcweb-turn-rest-00. This has now been replaced with a Google service. It's similar from an AppRTC perspective but with a different response format.

apprtc's People

Contributors

alvestrand avatar andresusanopinto avatar anthmfs avatar chuckhays avatar cvan avatar cwilso avatar doep avatar fippo avatar fischman avatar fluorescenthallucinogen avatar jan-ivar avatar jiayliu avatar juberti avatar kaorimatz avatar kaptenjansson avatar marwahvikas avatar milkypostman avatar minyuel avatar mirkobonadei avatar phistuck avatar piranna avatar praveenkishor123 avatar sachanacar avatar samdutton avatar stefanholmer avatar taylor-b avatar tednakamura avatar tkchin avatar wpp avatar yellowdoge avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.