Skip to content

Files

Failed to load latest commit information.

Latest commit

 Cannot retrieve latest commit at this time.

History

History
 
 

MultiRTC

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

MultiRTC / A Demo application for RTCMultiConnection.js! npm downloads

  1. Source Code: https://github.com/muaz-khan/WebRTC-Experiment/tree/master/MultiRTC
  2. Similar Demo: https://www.webrtc-experiment.com/RTCMultiConnection/MultiRTC/
  3. RTCMultiConnection.js: http://www.RTCMultiConnection.org/docs/

// Dependencies: 
// 1) socket (npm install websocket)
// 2) node-static (npm install node-static)

npm install multirtc

// to run it!
cd node_modules/multirtc/ && node signaler.js

Now, both WebSocket and HTTPs servers are running at port 12034:

https://localhost:12034/

=

Install on Linux/Ubuntu/CentOS/Debian/Mac etc.

# create a directory
mkdir MultiRTC

# open directory
cd MultiRTC

# get package
wget http://cdn.webrtc-experiment.com/packages/MultiRTC.tar

# extract package
tar -xf MultiRTC.tar

# run node.js server
node signaler.js

Now, you can open port 12034 on your ip address/domain; or otherwise on localhost: https://localhost:12034/

=

It is using port 12034; you can edit this port using following commands:

vi signaler.js

# now edit port 12034
# and save changes & quit

# press "insert" key; then press "Esc" key and the type
:wq

:wq command saves changes in the file and exits editing mode. If you don't want to save changes; simply type:

# if you don't want to save changes however want to exit editing mode
:q

Common Error: Error: listen EADDRINUSE. It means that same port is used by another application. You can close all existing processes running on same port:

// list all active processes running on same port
fuser -v 12034/tcp

// kill all processes running on port "12034"
fuser -vk 12034/tcp

// list again to verify closing ports
fuser -v 12034/tcp

You can delete "directory" and re-install:

rm -rf MultiRTC
mkdir MultiRTC

# and following above steps to "wget" and "tar" then "node" to run!

=

Note:

This MultiRTC Demo is using WebSockets over Nodejs for signaling and presence detection!

You can easily use any signaling implementation; whether it is Socket.io or XHR-Long polling or SIP/XMPP or WebSync/SignalR etc. Read more here!

Follow these steps to use other signaling servers:

  1. Cut code from "public" directory and paste in a unique directory.
  2. Now, open ui.peer-connection.js and go to line 14. You can override your own openSignalingChannel.
  3. Now, open ui.main.js and go to line 94. You can easily change websocket to socket.io or any other implementation.

and that's it!

=

What is MultiRTC?

  1. It is a skype-like demo using WebRTC for realtime connections!
  2. It allows you enable/disable webcams; and join with or without webcams!
  3. It allows you share screen using existing peer connections!
  4. It allows you share files with preview and download links!
  5. It allows you auto translate incoming messages in your own language!
  6. It gives you full control over bandwidth and screen resolutions!
  7. It allows you adjust file sharing speed yourself by setting chunk-size and chunk-intervals!
  8. It allows you test all WebRTC features by enabling/disabling some check-boxes!

Demo here: https://www.webrtc-experiment.com/RTCMultiConnection/MultiRTC/

=

How it works?

  1. It opens WebRTC data connection same like Skype!
  2. Multiple users can join same room; text chat and share multiple files concurrently!
  3. Choose your own URL! Users from one room can't access data or join users from other rooms.
  4. Anyone can add any media stream any-time! Whether it is screen; or audio/video.
  5. An advance settings section allows you customize many RTCMultiConnection features in one place!

It is an All-in-One solution for RTCMultiConnection.js!

=

Presence Detection!

Presence detection is handled by websocket-over-nodejs! Open ui.main.js file and go to line 79.

// use "channel" as sessionid or use custom sessionid!
var roomid = connection.channel;

var SIGNALING_SERVER = 'wss://wsnodejs.nodejitsu.com:443';
var websocket = new WebSocket(SIGNALING_SERVER);

websocket.onmessage = function (event) {
    var data = JSON.parse(event.data);
  
    if (data.isChannelPresent == false) {
        connection.open();
    } else {
        connection.join(roomid);
    }
};

websocket.onopen = function () {
    websocket.send(JSON.stringify({
        checkPresence: true,
        channel: roomid
    }));
};

=

websocket-over-nodejs for signaling!

Open ui.peer-connection.js and go to line 15.

// wss://wsnodejs.nodejitsu.com:443
// ws://wsnodejs.nodejitsu.com:80
// wss://www.webrtc-experiment.com:8563

var SIGNALING_SERVER = 'wss://wsnodejs.nodejitsu.com:443';
connection.openSignalingChannel = function(config) {
    config.channel = config.channel || this.channel;
    var websocket = new WebSocket(SIGNALING_SERVER);
    websocket.channel = config.channel;
    websocket.onopen = function() {
        websocket.push(JSON.stringify({
            open: true,
            channel: config.channel
        }));
        if (config.callback)
            config.callback(websocket);
    };
    websocket.onmessage = function(event) {
        config.onmessage(JSON.parse(event.data));
    };
    websocket.push = websocket.send;
    websocket.send = function(data) {
        websocket.push(JSON.stringify({
            data: data,
            channel: config.channel
        }));
    };
}

=

License

RTCMultiConnection.js WebRTC Library is released under MIT licence . Copyright (c) Muaz Khan.