npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

electron-peer-connection

v1.0.6

Published

A wrapper for RTCPeerConnection between Electron BrowserWindows that does not require STUN server for signalling.

Downloads

6

Readme

electron-peer-connection

This npm module is a wrapper for RTCPeerConnection, suited for the inter-Electron BrowserWindow communication which does not require a STUN server for signalling. Signalling is done throught Electron's built-in ipc feature instead.

Install

$ npm install --save electron-peer-connection

Example

  • main process
const p2pChannel = require('electron-peer-connection').main;

p2pChannel.initChannel();
// windowA and windowB are previously initiated BrowserWindows
p2pChannel.addClient( { window: windowA, name: 'windowA' } );
p2pChannel.addClient( { window: windowB, name: 'windowB' } );
  • window A (Sender)
const WindowPeerConnection = require("electron-peer-connection").WindowPeerConnection;

let windowA = new WindowPeerConnection('windowA');
windowA.attachStream(stream);
windowA.sendStream('windowB');
  • window B (Receiver)
const WindowPeerConnection = require("electron-peer-connection").WindowPeerConnection;

let windowB = new WindowPeerConnection('windowB');
windowB.onReceivedStream(function (stream) {
    video.srcObject = stream;
});

API

Class: WindowPeerConnection

Parameter

  • windowName: the BrowserWindow’s name in main process

The WindowPeeerConnection wraps around webkitRTCPeerConnection class, which on construction in a renderer process, sets up a IPC listeners that receive message and data from other windows. All the message are relayed through the main process, and data are serialized before transmitted.

Method

  • attachStream ( streamToSend ) : attaches a MediaStream object on the peer connection channel, which can be transmitted by sendStream method. Currently, it can only attach one stream per connection.
  • removeStream ( ) : removes the MediaStream attached to this peer connection channel.
  • sendStream ( receiverName ) : sends the attached MediaStream object to the target window specified the string ‘receiverName’. receiverName refers to the name of the variable assigned to the target BrowserWindow in the Electron’s main process.

Event Listener

  • onReceivedStream ( function(receivedStream) ) : triggered when the WindowPeerConnection receives a MediaStream from a remote window.

Main Process: Data Relay Channel

A Javascript object that is called in the Electron’s main process. Since Electron does not support direct IPC between BrowserWindows, all messages and data must be relayed through the main process, using ipcMain. Each BrowserWindow is wrapped as a client in the data Channel.

Function

  • addClient ( client ) : adds a client on the data relay channel. A client is a Javascript object with the following format: client = { window: browerWindowObject, name: "BrowserWindowName" }

  • removeClient ( clientName ) : removes a client with the given window name from the data relay channel.

  • initChannel ( ) : initiates the data relay channel with the current array of clients. Clients can be furthered added after the channel is initiated.

  • dispose ( ) : disposes the data relay channel.

License

MIT