Signaling Gateway for Skyway and Janus Gateway
see SkyWay IoT SDK install manual
We support three features shown below.
- bidirectional data channel communication
- 3rd party interface for this is TCP (by default 15000)
- one-way media stream from Janus Gateway
- leveraging streaming plugin of Janus Gateway
- one-way voice stream to Janus Gateway
- 3rd party interface for this is UDP (by default 25000)
Below, we'll show up web Snipets for web app, iOS, Android to utilize these features leveraging SkyWay SDK.
const mypeerid;
const peer = new Peer(key: MY_APIKEY);
peer.on('open', id => { mypeerid = id; });
const conn = peer.connect(PEERID_OF_SSG, {serialization: "none", reliable: true});
conn.on('open', () => { conn.send('hello'); });
navigator.mediaDevices.getUserMedia({audio: true, video: false})
.then( stream => { peer.call(PEERID_OF_SSG, stream) } );
// we assume datachannel already establlished.
// set handler for Janus side media stream.
peer.on('call', stream => { $("#video").attr("src", window.URL.createObjectURL(stream) });
// request call
conn.send(`SSG:stream/start,${mypeerid}`)
...
// stop call
conn.send('SSG:stream/stop');
You have two way.
- set it in conf/skyway.yaml
- set PEERID environment while running process
$ PEERID=ssgid node app.js
setting envronment will overwrite it in skyway.yaml
You can automatically execute streaming process. To enable this feature, set ENABLE_AUTO_STREAMING=true while starting process as shown below.
$ ENABLE_AUTO_STREAMING=true node app.js
Also, you need to set the path of streaming process in janus.yaml.
streaming_process: "/bin/bash ~/signalinggateway/skywayiot-sdk-test/media_streaming_transfer_test.sh"
By setting FORCE_OPUS=true while starting process, you can force audio codec to opus from client to Janus Gateway.
$ FORCE_OPUS=true node app
use SSG_APIKEY, SSG_ORIGIN, SSG_SECURE and SSG_UUID for each
SSG_APIKEY=XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX SSG_ORIGIN=http://localhost SSG_UUID="test-uuid" node app.js
$ npm test
$ npm run test:watch
license Apache-2.0