MCPcopy Create free account
hub / github.com/SnapDrop/snapdrop / PeersManager

Class PeersManager

client/scripts/network.js:362–414  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

360}
361
362class PeersManager {
363
364 constructor(serverConnection) {
365 this.peers = {};
366 this._server = serverConnection;
367 Events.on('signal', e => this._onMessage(e.detail));
368 Events.on('peers', e => this._onPeers(e.detail));
369 Events.on('files-selected', e => this._onFilesSelected(e.detail));
370 Events.on('send-text', e => this._onSendText(e.detail));
371 Events.on('peer-left', e => this._onPeerLeft(e.detail));
372 }
373
374 _onMessage(message) {
375 if (!this.peers[message.sender]) {
376 this.peers[message.sender] = new RTCPeer(this._server);
377 }
378 this.peers[message.sender].onServerMessage(message);
379 }
380
381 _onPeers(peers) {
382 peers.forEach(peer => {
383 if (this.peers[peer.id]) {
384 this.peers[peer.id].refresh();
385 return;
386 }
387 if (window.isRtcSupported && peer.rtcSupported) {
388 this.peers[peer.id] = new RTCPeer(this._server, peer.id);
389 } else {
390 this.peers[peer.id] = new WSPeer(this._server, peer.id);
391 }
392 })
393 }
394
395 sendTo(peerId, message) {
396 this.peers[peerId].send(message);
397 }
398
399 _onFilesSelected(message) {
400 this.peers[message.to].sendFiles(message.files);
401 }
402
403 _onSendText(message) {
404 this.peers[message.to].sendText(message.text);
405 }
406
407 _onPeerLeft(peerId) {
408 const peer = this.peers[peerId];
409 delete this.peers[peerId];
410 if (!peer || !peer._peer) return;
411 peer._peer.close();
412 }
413
414}
415
416class WSPeer {
417 _send(message) {

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected