mediasoup-client
JavaScript client side SDK for building mediasoup based applications.
NOTE: Work in progress. See the roadmap for mediasoup 2.0.0.
Usage example
import * as mediasoupClient from 'mediasoup-client';
import mySignalingChannel from './mySignalingChannel';
const channel = new mySignalingChannel(
{
url : 'wss://myserver.test',
peerName : 'alice',
roomId : 'demo1'
});
const room = new mediasoupClient.Room();
const sendTransport = room.createTransport('send');
const recvTransport = room.createTransport('recv');
room.join()
.then((peers) =>
{
for (let peer of peers)
{
handlePeer(peer);
}
})
.then(() =>
{
return navigator.mediaDevices.getUserMedia(
{
audio : true,
video : true
});
})
.then((stream) =>
{
const audioTrack = stream.getAudioTracks()[0];
const videoTrack = stream.getVideoTracks()[0];
const audioProducer = room.createProducer(audioTrack);
const videoProducer = room.createProducer(videoTrack);
sendTransport.send(audioProducer)
.then(() => console.log('sending our mic'));
sendTransport.send(videoProducer)
.then(() => console.log('sending our webcam'));
});
room.on('newpeer', (peer) =>
{
console.log('a new Peer joined the Room: %s', peer.name);
handlePeer(peer);
});
room.on('request', (request, callback, errback) =>
{
channel.send({ type: 'mediasoup-request', body: request })
.then((response) =>
{
callback(response.body);
})
.catch((error) =>
{
errback(String(error));
});
});
room.on('notify', (notification) =>
{
channel.send({ type: 'mediasoup-notification', body: notification })
});
channel.on('message', (message) =>
{
if (message.type === 'mediasoup-notification')
{
room.receiveNotification(message.body);
}
else
{
}
});
function handlePeer(peer)
{
for (let consumer of peer.consumers)
{
handleConsumer(consumer);
}
peer.on('closed', () =>
{
console.log('Peer closed');
});
peer.on('newconsumer', (consumer) =>
{
console.log('Got a new Consumer');
handleConsumer(consumer);
});
}
function handleConsumer(consumer)
{
recvTransport.receive(consumer)
.then((track) =>
{
console.log('receiving a new remote MediaStreamTrack');
});
consumer.on('closed', () =>
{
console.log('Consumer closed');
});
}
Authors
License
ISC