2.0.1 • Published 5 years ago

webrtc-myip v2.0.1

Weekly downloads
5
License
MIT
Repository
github
Last release
5 years ago

WebRTC-myip - webRTC client

A library for WebRTC media streaming

Presenter's flowViewer's flow
1. Create webRTC client instance
const rtc = new RTC(WS_SERVER_URL, RTC_CONFIG);
2. Set media source2. Set media destination
rtc.setSourceVideo('userMedia', userMedia);rtc.connectDestinationVideo('userMedia', userMedia);
3. Join a room as a streamer3. Join a room as a viewer
rtc.join(room, true);rtc.join(room, false);

Install

npm install webrtc-myip

Sample usage

import { RTC_CONFIG, WS_SERVER_URL } from "./config";
import RTC, { STREAM_EVENTS } from "webrtc-myip";

const webcamEl = <HTMLVideoElement>document.getElementById('webcam');
const screenEl = <HTMLVideoElement>document.getElementById('screen');
const queryString = require('query-string');
const { room, isStreamer } = queryString.parse(location.search);

const rtc = new RTC(WS_SERVER_URL, RTC_CONFIG);

console.log(room, isStreamer);

async function streamerFlow(room: string) {
    webcamEl.srcObject = await rtc.setupMedia('userMedia');
    const connection = await rtc.join(room, isStreamer);
}

async function viewerFlow(room: string) {
    const connection = await rtc.join(room, isStreamer);
    connection.on(STREAM_EVENTS.REMOTE_USER_MEDIA, (stream: MediaStream) => {
        webcamEl.srcObject = stream;
    });
    connection.on(STREAM_EVENTS.REMOTE_DISPLAY, (stream: MediaStream) => {
        screenEl.srcObject = stream;
    });
}

if (isStreamer) {
    streamerFlow(room).catch(console.error);
} else {
    viewerFlow(room).catch(console.error);
}

See working example code in the example folder

Docs

Read full documentation here

Socket interface

To exchange peer negotiation messages (offer & answer) WebRTC-myip uses web socket. Pass WS URL in RTC instance constructor to connect to your socket.

new RTC(WS_SERVER_URL, RTC_CONFIG)

Your socket has to implement following types of events:

  • 'me' - passes just connected user id to the connected user
  • 'other' - passes connected user id to Presenter
  • 'message' - translate user's message to other participants

See sample socket code in the example folder