@webrtc-remote-control/core
![Demo](https://img.shields.io/badge/demo-online-blue.svg)
Imagine you could simply control a web page opened in a browser (master) from an other page in an other browser (remote), just like you would with a TV and a remote.
webrtc-remote-control lets you do that (based on PeerJS) and handles the disconnections / reconnections, providing a simple API.
Check the demos to have a better understanding.
More infos on topheman/webrtc-remote-control.
Installation
npm install peerjs @webrtc-remote-control/core
Usage
This package is the core one. Implementations for popular frameworks such as react or vue are available here.
Example code
More examples in demo.
Add the peerjs library as a script tag in your html page. You'll have access to Peer
constructor.
<script src="https://unpkg.com/peerjs@1.3.2/dist/peerjs.min.js"></script>
master
import prepare, { prepareUtils } from "@webrtc-remote-control/core/master";
async function init() {
const { bindConnection, getPeerId, humanizeError } = prepare(prepareUtils());
const peer = new Peer(getPeerId());
peer.on("open", (peerId) => {
});
const api = await bindConnection(peer);
api.on("remote.connect", ({ id }) => {
console.log(`Yay, remote ${id} just connected to master!`);
});
api.on("remote.disconnect", ({ id }) => {
console.log(`Boo, remote ${id} just disconnected from master!`);
});
api.on("data", ({ id }, data) => {
console.log(`Remote ${id} just sent the message`, data);
});
api.sendAll({ msg: "Hello world to all remotes" });
}
remote
import prepare, { prepareUtils } from "@webrtc-remote-control/core/remote";
async function init() {
const { bindConnection, getPeerId, humanizeError } = prepare(prepareUtils());
const peer = new Peer(getPeerId());
const api = await bindConnection(peer, masterPeerId);
api.on("remote.disconnect", ({ id }) => {
console.log(`Boo, remote ${id} just disconnected from master!`);
});
api.on("remote.reconnect", ({ id }) => {
console.log(`Yay, remote ${id} just reconnected to master!`);
});
api.on("data", (_, data) => {
console.log("Master just sent this message", data);
});
api.send({ msg: "Hello master page" });
}
TypeScript
TypeScript types are shipped with the package.
UMD build
Don't want to use a bundler ? You can simply use the UMD (Universal Module Definition) build and drop it with a script tag from your favorite js cdn, you'll have access to a webrtcRemoteControl
object on the window
.