Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/peers/peerjs
Simple peer-to-peer with WebRTC.
https://github.com/peers/peerjs
browser dataconnection javascript p2p parcel typescript webrtc
Last synced: 7 days ago
JSON representation
Simple peer-to-peer with WebRTC.
- Host: GitHub
- URL: https://github.com/peers/peerjs
- Owner: peers
- License: mit
- Created: 2012-12-23T07:28:47.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2024-04-12T17:46:16.000Z (7 months ago)
- Last Synced: 2024-04-14T02:42:01.885Z (7 months ago)
- Topics: browser, dataconnection, javascript, p2p, parcel, typescript, webrtc
- Language: TypeScript
- Homepage: https://peerjs.com
- Size: 9.57 MB
- Stars: 11,942
- Watchers: 248
- Forks: 1,398
- Open Issues: 181
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
- my-awesome-starred - peerjs - Peer-to-peer data in the browser. (JavaScript)
- awesome-peer-to-peer - peerjs - to-peer with WebRTC (Libraries)
- awesome-github-repos - peers/peerjs - Simple peer-to-peer with WebRTC. (TypeScript)
- awesome-webrtc - peerjs - Simple peer-to-peer with WebRTC. (Libraries / JavaScript)
- awesome-list - peerjs - to-peer with WebRTC | peers | 9544 | (TypeScript)
- awesome-peer-to-peer - peerjs - to-peer with WebRTC (Libraries)
- starred-awesome - peerjs - Peer-to-peer data in the browser. (JavaScript)
README
# PeerJS: Simple peer-to-peer with WebRTC
[![Backers on Open Collective](https://opencollective.com/peer/backers/badge.svg)](#backers)
[![Sponsors on Open Collective](https://opencollective.com/peer/sponsors/badge.svg)](#sponsors)
[![Discord](https://img.shields.io/discord/1016419835455996076?color=5865F2&label=Discord&logo=discord&logoColor=white)](https://discord.gg/Ud2PvAtK37)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).
---
Special Announcement:
We now have a Discord Channel
There we plan to discuss roadmaps, feature requests, and more
Join us today---
## 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 element.
});
},
(err) => {
console.error("Failed to get local stream", err);
},
);
```**Answer**
```javascript
peer.on("call", (call) => {
navigator.mediaDevices.getUserMedia(
{ video: true, audio: true },
(stream) => {
call.answer(stream); // Answer the call with an A/V stream.
call.on("stream", (remoteStream) => {
// Show stream in some element.
});
},
(err) => {
console.error("Failed to get local stream", err);
},
);
});
```## Running tests
```bash
npm test
```## Browser support
| [](http://godban.github.io/browsers-support-badges/)
Firefox | [](http://godban.github.io/browsers-support-badges/)
Chrome | [](http://godban.github.io/browsers-support-badges/)
Edge | [](http://godban.github.io/browsers-support-badges/)
Safari |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 80+ | 83+ | 83+ | 15+ |We test PeerJS against these versions of Chrome, Edge, Firefox, and Safari with [BrowserStack](https://www.browserstack.com) to ensure compatibility.
It may work in other and older browsers, but we don't officially support them.
Changes to browser support will be a breaking change going forward.> [!NOTE]
> Firefox 102+ is required for CBOR / MessagePack support.## FAQ
Q. I have a message `Critical dependency: the request of a dependency is an expression` in browser's console
A. The message occurs when you use PeerJS with Webpack. It is not critical! It relates to Parcel https://github.com/parcel-bundler/parcel/issues/2883 We'll resolve it when updated to Parcel V2.
## Links
### [Documentation / API Reference](https://peerjs.com/docs/)
### [PeerServer](https://github.com/peers/peerjs-server)
### [Discuss PeerJS on our Telegram Channel](https://t.me/joinchat/ENhPuhTvhm8WlIxTjQf7Og)
### [Changelog](https://github.com/peers/peerjs/blob/master/CHANGELOG.md)
## Contributors
This project exists thanks to all the people who contribute.
## Backers
Thank you to all our backers! [[Become a backer](https://opencollective.com/peer#backer)]
## Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/peer#sponsor)]
## License
PeerJS is licensed under the [MIT License](https://tldrlegal.com/l/mit).