Giter Site home page Giter Site logo

datafestivus's Introduction

Data Festivus

WebRTC for the rest of us. It's a miracle.

Can you believe this: Build Status

But seriously, this is a webRTC wrapper for data packet exchange. Sending audio and video might be cool, but just sending serialized data is more useful.

Usage

  1. Include the library, [datafestivus.js], from this repository.
  2. Construct a SideBand object (var sideband = new DataFestivus.SideBand) and override the methods onsave, oncomplete, and begin. Due to implementation details, there are specific requirements for each override. See github Issue #1
  3. Depending on whether the local code is offering or answering the connection, pass the sideband instance to DataFestivus.start or DataFestivus.reply, respectively.
  4. After the sideband's oncomplete is called (indicating a successful connection), use Datafestivus.send to transmit a data object via the connection. Add an event listener function using Datafestivus.addMessageListener, which is called with the data object as its single argument.

Sideband Requirements

begin - See github Issue #2 - begin must differentiate offer and answer by whether sideBand.isStarted is set to true

Goals

This project aims to create a stateless storage system on a server that can facilitate a peer-to-peer connection in WebRTC. It also implements a WebRTC app that demonstrates its usefulness. The reason for the server application is:

  1. WebRTC requires a 3rd party means of communication in order to establish a peer-to-peer connection.
  2. Every WebRTC tutorial glosses over this problem by connecting a browser window to itself via javascript variables.
  3. Some solutions suggest using 3rd-party services to solve the problem, such as Firebase, which are unnecessary.
  4. The data that needs to be transmitted is simple json; there's no need to complicate sharing it.

Dev Journal

datafestivus's People

Contributors

sethbattin avatar

Watchers

 avatar  avatar

datafestivus's Issues

Usage documentation

Create library usage instructions. Highlight any aspects of the current implementation that make usage difficult, and create more issues to correct them.

Datafestivus.SideBand.begin override must be able to differentiate offer from reply

Currently the begin method must be able to determine whether the local process is offering or answering, and the only way to do that is through the isStarted property of the sideband instance. But this is nonobvious and weird, and it's coupled to the polling system used in the server.html example.

This should be improved so that no such coupling is required.

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.