Sen descrición

Jonas Gloning c8f22ad566 test on Chrome instead of Edge hai 1 ano
.github 6b9ed7c979 ci: use `package.json` version of prettier hai 1 ano
__test__ 0d1468514c test(jest): skip broken test until a better solution is found hai 1 ano
e2e c8f22ad566 test on Chrome instead of Edge hai 1 ano
lib ed84829a10 feat(MediaChannel): Add experimental `willCloseOnRemote` event to MediaConnection. hai 1 ano
.deepsource.toml d02b4802f0 Added .deepsource.toml %!s(int64=4) %!d(string=hai) anos
.gitignore 168d407c07 test: configure jest %!s(int64=2) %!d(string=hai) anos
.parcelrc b5beec4a07 fix(bundler import): enable module target %!s(int64=3) %!d(string=hai) anos
.prettierignore 2b604305c1 style: prettier ignore CHANGELOG.md %!s(int64=3) %!d(string=hai) anos
.prettierrc.toml d46692622d style: configure prettier %!s(int64=3) %!d(string=hai) anos
.releaserc.json d5bd9552da fix: add changelog and npm version to the repo %!s(int64=3) %!d(string=hai) anos
CHANGELOG.md 9aaf86fe90 chore(release): 1.4.7 [skip ci] %!s(int64=2) %!d(string=hai) anos
LICENSE fc7c88d3e3 Update LICENSE %!s(int64=10) %!d(string=hai) anos
README.md 61b785bdd8 adjust browser table in readme hai 1 ano
browserstack.err d9d9407d35 test(e2e): run datachannel serialization tests hai 1 ano
jest.config.cjs d9d9407d35 test(e2e): run datachannel serialization tests hai 1 ano
package-lock.json ee18c1704e remove `@swc/helpers` hai 1 ano
package.json ee18c1704e remove `@swc/helpers` hai 1 ano
renovate.json 749042e7f9 chore(deps): merge renovate updates with `branch` strategy hai 1 ano
tsconfig.json d9d9407d35 test(e2e): run datachannel serialization tests hai 1 ano

README.md

PeerJS: Simple peer-to-peer with WebRTC

https://t.me/joinchat/VWI0UBxnG7f7_DV7

Backers on Open Collective Sponsors on Open Collective

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.

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
Firefox
Chrome
Chrome
Safari
Safari
80+ 81+ 14+

We test PeerJS against these versions of Chrome, Firefox, and Safari to ensure compatibility. It may work in other and older browsers, but we don't officially support them.

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.