Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pulsebeamdev/pulsebeam-js
WebRTC Peer-to-Peer Communication JS Client SDK
https://github.com/pulsebeamdev/pulsebeam-js
js webrtc webrtc-call webrtc-demos webrtc-javascript-library webrtc-libraries webrtc-signaling
Last synced: 12 days ago
JSON representation
WebRTC Peer-to-Peer Communication JS Client SDK
- Host: GitHub
- URL: https://github.com/pulsebeamdev/pulsebeam-js
- Owner: PulseBeamDev
- License: apache-2.0
- Created: 2024-12-03T19:10:01.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2025-01-24T22:56:48.000Z (13 days ago)
- Last Synced: 2025-01-24T23:26:33.842Z (13 days ago)
- Topics: js, webrtc, webrtc-call, webrtc-demos, webrtc-javascript-library, webrtc-libraries, webrtc-signaling
- Language: TypeScript
- Homepage: https://jsr.io/@pulsebeam/peer
- Size: 2.42 MB
- Stars: 4
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# @pulsebeam/peer: WebRTC Peer-to-Peer Communication SDK
Simplifies real-time application development. Defines signaling protocol for connection establishment, handling media and data transmission, and provides infrastructure.
### Features
- Media & Data Support: Transmit audio, video, and/or data channels within your applications.
- Abstracted Signaling: Handles the exchange of information required to set up WebRTC connections, relieving you of low-level details.
- Automatic Reconnection: Maintains connection stability by automatically re-establishing connections when disruptions occur.
- Opt out of Peer-to-Peer: Can configure to force server-relayed communication.# Installation
Install and import the package using npm, deno, or yarn:
### Use with npm
Add Package
`npm i @pulsebeam/peer`
Import symbol
`import * as peer from "@pulsebeam/peer";`
### Use with Yarn
Add Package
`yarn add @pulsebeam/peer`
Import symbol
`import * as peer from "@pulsebeam/peer";`
# Usage
Here's an example demonstrating how to use @pulsebeam/peer to establish a peer-to-peer connection:
```ts
import { Peer, createPeer } from "@pulsebeam/peer";// Obtain an authentication token (implementation specific)
const authResponse = await fetch("/auth");
const { groupId, peerId, token } = await authResponse.json();// Create a Peer instance
const peer = await createPeer({ groupId, peerId, token });// Define handlers for incoming events (optional)
peer.onsession = (session) => {
session.ontrack = ({ streams }) => console.log("New media stream:", streams);
session.ondatachannel = (event) => console.log("Data channel:", event.channel);
session.onconnectionstatechange = () => console.log("Connection state changed");
};// Start Alice's availability. Connect to our signaling servers
peer.start();// Connect to bob
const abortController = new AbortController();
await peer.connect(groupId, "bob", abortController.signal);
```This example retrieves an authentication token (implementation details will vary depending on your setup), creates a Peer instance, and defines event handlers for receiving media streams, data channels, and connection state changes (optional). Finally, it starts connection attempts and connects to a specific peer identified by its ID within the group.
# Documentation
For documentation, API keys, and usage scenarios, please refer to the official PulseBeam documentation:
* https://pulsebeam.dev/docs/
# WebRTC Resources
For a deeper understanding of WebRTC concepts, consult the official WebRTC documentation:
* https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API