skyway-multiparty

1.0.4 • Public • Published

SkyWay MultiParty

日本語 | English

This is a library for easy implementation of group video chat with SkyWay(http://nttcom.github.io/skyway/).

Sample

// Generate a MultiParty instance.
multiparty = new MultiParty( {
  "key": "********-****-****-****-************"  /* SkyWay key */,
  "reliable": true /* Use reliable communication(SCTP) in Data Channel. */
});
 
// for MediaStream
//
 
multiparty.on('my_ms', function(video) {
  // Show my video.
  var vNode = MultiParty.util.createVideoNode(video);
  vNode.volume = 0;
  $(vNode).appendTo("#streams");
}).on('peer_ms', function(video) {
  // Show peer's video.
  var vNode = MultiParty.util.createVideoNode(video);
  $(vNode).appendTo("#streams");
}).on('ms_close', function(peer_id) {
  // Remove the video node when peer is disconnected.
  $("#"+peer_id).remove();
})
 
 
// for DataChannel
//
 
$("button").on('click', function(ev) {
  multiparty.send('hello'); /* Send message to the connected peers. */
});
 
multiparty.on('message', function(mesg) {
  $("p.receive").append(mesg.data + "<br>"); /* Show the received message.  */
});
 
// Connect to the server and peers
multiparty.start()

Demo page(local test)

  1. update your own APIKEY in line 57 of examples/multiparty-sample.html. (Please be sure that localhost is registered in your APIKEY setting)
  2. $ npm install
  3. $ npm run webpack-dev-server
  4. open https://localhost:8081/examples/multiparty-sample.html in two browser window.

In case you don't have APIKEY, please sign-up SkyWay account and obtain API key at https://skyway.io/ds/.

Demo Page

Installing with NPM

$ npm install skyway-multiparty

Using with webpack etc.

const MultiParty = require('skyway-multiparty')

Download

API reference

MultiParty

var multiparty = new MultiParty([options]);
  • options

    • key (string)
    • room (string)
      • room name
    • id (string)
      • user id
    • reliable (boolean)
      • true indicates reliable data transfer (data channel). default : false
    • selialization (string)
      • set data selialization mode ( binary | binary-utf8 | json | none ). default : binary
    • video (boolean)
      • true indicates video streaming is enabled.default: true
    • audio (boolean)
      • true indicates audio streaming is enabled. default: true
    • polling (boolean)
      • true indicates check user list via server polling. default: true
    • polling_interval (number)
      • polling interval in msec order. default: 3000
    • debug (number)
      • debug log level appeared in console.
    0 Prints no logs.
    1 Prints only errors.
    2 Prints errors and warnings.
    3 Prints all logs.
    
    • host (string)
      • peer server host name.
    • port (number)
      • peer server port number.
    • secure (boolean)
      • true means peer server provide tls.
    • config (object)
      • passed to RTCPeerConnection. it indicates custom ICE server configuration. Defaults to { 'iceServers': [{ 'url': 'stun:stun.skyway.io:3478' }] }.

start

Connect to the SkyWay server and all peers.

multiparty.on

multiparty.on(event, callback);

'open'

multiparty.on('open', function(myid){ ... });
  • Emitted when a connection to SkyWay server has established.
  • id : id of current window.

'my_ms'

multiparty.on('my_ms', function({"src": <object url>, "id": <myid>}){...});
  • Emitted when this window's video/audio stream has setuped. object url is the url for captured stream. id is current window's id.
  • object url : url for captured stream.
  • id : current window's id.

'peer_ms'

multiparty.on('peer_ms', function({"src": <object url>, "id": <peer-id>, "reconnect": <true or false>}){ ... });
  • Emitted when peer's av stream has setuped.
  • src : Object URL of peer's stream.
  • id : peer's id.
  • reconnect : true when connected via reconnect method.

'peer_ss'

multiparty.on('peer_ss', function({"src": <object url>, "id": <peer-id>, "reconnect": <true or false>}){ ... });
  • Emitted when peer's screen captrure stream has setuped.
  • src : Object URL of peer's screen capture stream.
  • id : peer's id.
  • reconnect : true when connected via reconnect method.

'ms_close'

multiparty.on('ms_close', function(peer-id){ ... });
  • Emitted when peer's media stream has closed.
  • peer-id : peer's id.

'ss_close'

multiparty.on('ss_close', function(peer-id){ ... });
  • Emitted when peer's screen cast stream has closed.
  • peer-id : peer's id.

'dc_open'

multiparty.on('dc_open', function(peer-id){ ... });
  • Emitted when the connection for data channel with peer is setuped.
  • peer-id : peer's id.

'message'

multiparty.on('message', function({"id": <peer-id>, "data": <data>}){ ... });
  • Emitted when receive message from peer.
  • peer-id : peer's id.
  • data : Received data.

'dc_close'

multiparty.on('dc_close', function(peer-id){ ... });
  • Emitted when data connection has closed with peer.
  • peer-id : peer's id.

'error'

multiparty.on('error', function(error){ ... });
  • Emitted when an error occurs.
  • error : Error object.

mute

Mute current video/audio.

multiparty.mute({"video": <true of false>, "audio": <true or false>);

unmute

Unmute current video/audio.

multiparty.unmute({"video": <true of false>, "audio": <true or false>);

removePeer

Close peer's media stream and data stream.

multiparty.removePeer(peer-id);

send

Send data to every peer.

multiparty.send(data);

close

Close every connection.

multiparty.close();

startScreenShare

Start screen share.

multiparty.startScreenShare(function(stream){
  // success callback
}, function(err) {
  // error callback
});

stopScreenShare

Stop screen share.

multiparty.stopScreenShare();

listAllPeers

Get all of the connected peer ids.

multiparty.listAllPeers(function(lists) { ... });

reconnect

Reconnect the disconnected peer.

multiparty.reconnect(peer_id, function({"video": <boolean>, "screen": <boolean>, "data": <boolean>}){ ... });

MultiParty.util.createVideoNode

Create video node from Object URL.

var vNode = MultiParty.util.createVideoNode({"src": object_url, "id": peer_id}){ ... });

LICENSE & Copyright

LICENSE

Readme

Keywords

none

Package Sidebar

Install

npm i skyway-multiparty

Weekly Downloads

0

Version

1.0.4

License

none

Last publish

Collaborators

  • alanmshelly
  • nttcom-skyway
  • komasshu
  • yusuke84