# PeerJS: Simple peer-to-peer with WebRTC ### https://t.me/joinchat/VWI0UBxnG7f7_DV7 [![Backers on Open Collective](https://opencollective.com/peer/backers/badge.svg)](#backers) [![Sponsors on Open Collective](https://opencollective.com/peer/sponsors/badge.svg)](#sponsors) PeerJS provides a complete, configurable, and easy-to-use peer-to-peer API built on top of WebRTC, supporting both data channels and media streams. ## Live Example Here's an example application that uses both media and data connections: https://glitch.com/~peerjs-video. The example also uses its own [PeerServer](https://github.com/peers/peerjs-server). ## Setup **Include the library** with npm: `npm install peerjs` with yarn: `yarn add peerjs` ```js // The usage - import { Peer } from "peerjs"; ``` **Create a Peer** ```javascript const peer = new Peer("pick-an-id"); // You can pick your own id or omit the id if you want to get a random one from the server. ``` ## Data connections **Connect** ```javascript const conn = peer.connect("another-peers-id"); conn.on("open", () => { conn.send("hi!"); }); ``` **Receive** ```javascript peer.on("connection", (conn) => { conn.on("data", (data) => { // Will print 'hi!' console.log(data); }); conn.on("open", () => { conn.send("hello!"); }); }); ``` ## Media calls **Call** ```javascript navigator.mediaDevices.getUserMedia( { video: true, audio: true }, (stream) => { const call = peer.call("another-peers-id", stream); call.on("stream", (remoteStream) => { // Show stream in some