stalk-js-webrtc
Version:
S-Talk web-rtc javascript client implementation.
76 lines (75 loc) • 2.27 kB
JavaScript
/**
* React-Native webrtc interface.
*
* Copyright 2017 Ahoo Studio.co.th.
*/
import { AbstractPeerConnection } from "../index";
import { Peer } from "./Peer";
var PeerManager = /** @class */ (function () {
function PeerManager(options) {
this.debug = false;
this.peers = new Map();
this.debug = options.debug;
this.createPeer = this.createPeer.bind(this);
}
PeerManager.prototype.createPeer = function (options, webrtc) {
var self = this;
var config = {
peer_id: options.id,
offer: options.offer,
pcPeers: this.peers,
stream: webrtc.userMedia.getLocalStream(),
emitter: webrtc.webrtcEvents,
sendHandler: webrtc.send,
debug: self.debug,
iceConfig: webrtc.iceConfig
};
var peer = new Peer(config);
this.peers.set(options.id, peer);
return peer;
};
PeerManager.prototype.getPeers = function (sessionId) {
if (sessionId) {
return this.peers.get(sessionId);
}
else {
return this.peers;
}
};
;
PeerManager.prototype.removePeers = function (sessionId, webrtc) {
var peer = this.getPeers(sessionId);
if (peer) {
peer.pc.close();
webrtc.webrtcEvents.emit(AbstractPeerConnection.PEER_STREAM_REMOVED, peer);
}
this.peers.delete(sessionId);
};
;
/**
* sends message to all
* use signalling message.
*
* @param {any} message
* @param {any} payload
* @memberof PeerManager
*/
PeerManager.prototype.sendToAll = function (message, payload) {
this.peers.forEach(function (peer) {
peer.send_event(message, payload, { to: peer.id });
});
};
;
// sends message to all using a datachannel
// only sends to anyone who has an open datachannel
PeerManager.prototype.sendDirectlyToAll = function (channel, message, payload) {
this.peers.forEach(function (peer) {
// if (peer.enableDataChannels) {
// peer.sendDirectly(channel, message, payload);
// }
});
};
;
return PeerManager;
}());
export { PeerManager };