peers/peerjs
peers/peerjs has 13,515 GitHub stars and 1,459 forks. GitHot measured -1 stars in 24 hours and +8 in 7 days. Last checked 2026-11-13 11:44 UTC. Last push 2026-02-27.
측정된 스타 증가
- in 24h
- -1
- in 7 days
- +8
- in 15 days
- 기록 수집 중
- in 1 month
- 기록 수집 중
서로 겹치는 기간의 순증가량이며 일별 합계가 아닙니다. 측정값이 없으면 비워 둡니다. 스타는 관심도를 나타내며 품질을 보장하지 않습니다.
소개
Simple peer-to-peer with WebRTC.
웹 및 앱README.md
OriginalPeerJS: Simple peer-to-peer with WebRTC
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.
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
// The usage -
import { Peer } from "peerjs";
Create a Peer
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
const conn = peer.connect("another-peers-id");
conn.on("open", () => {
conn.send("hi!");
});
Receive
peer.on("connection", (conn) => {
conn.on("data", (data) => {
// Will print 'hi!'
console.log(data);
});
conn.on("open", () => {
conn.send("hello!");
});
});
Media calls
Call
navigator.mediaDevices.getUserMedia(
{ video: true, audio: true },
(stream) => {
const call = peer.call("another-peers-id", stream);
call.on("stream", (remoteStream) => {
// Show stream in some <video> element.
});
},
(err) => {
console.error("Failed to get local stream", err);
},
);
Answer
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 <video> element.
});
},
(err) => {
console.error("Failed to get local stream", err);
},
);
});
Running tests
npm test
Browser support
Firefox |
Chrome |
Edge |
Safari |
|---|---|---|---|
| 80+ | 83+ | 83+ | 15+ |
We test PeerJS against these versions of Chrome, Edge, Firefox, and Safari with BrowserStack 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
PeerServer
Discuss PeerJS on our Telegram Channel
Changelog
Contributors
This project exists thanks to all the people who contribute.
Backers
Thank you to all our backers! [Become a backer]
Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]
License
PeerJS is licensed under the MIT License.
관련 프로젝트 살펴보기
freeCodeCamp/freeCodeCamp
freeCodeCamp.org의 오픈 소스 코드베이스와 커리큘럼입니다. 수학, 프로그래밍, 컴퓨터 과학을 무료로 배울 수 있습니다.
459,089 스타donnemartin/system-design-primer
대규모 시스템 설계 방법을 배우고 시스템 설계 면접을 준비할 수 있습니다. Anki 플래시카드가 포함되어 있습니다.
377,770 스타react/react
웹과 네이티브 사용자 인터페이스를 위한 라이브러리.
252,577 스타vuejs/vue
Vue 2 저장소입니다. Vue 3은 https://github.com/vuejs/core를 방문하세요.
212,527 스타