JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 8
  • Score
    100M100P100Q49219F
  • License MIT

WebPEER.js is Decentralized P2P network overlay inside browser.

Package Exports

  • webpeerjs

Readme

WebPEER

Decentralized P2P network overlay inside browser

WebPEER.js enables browser to browser connectivity without a central server. Build completely peer-to-peer web applications, no trackers or relay servers required. Connecting projects safely, privately, and reliably in WebPEER Network.

Basic Connection Demo available at : https://nuzulul.github.io/webpeerjs/demo/

Basic Chat App Demo available at : https://nuzulul.github.io/webpeerjs/demo/chat.html

Security

WebPEER Network run over libp2p gossipsub protocol to enables communication between peers.

By default, the gossipsub implementation will sign all messages with the author’s private key, and require a valid signature before accepting or propagating a message further. This prevents messages from being altered in flight, and allows recipients to authenticate the sender.

However, as a cooperative protocol, it may be possible for peers to interfere with the message routing algorithm in a way that disrupts the flow of messages through the network.

Features

  • ✅ Decentralized P2P
  • ✅ Scalable Peers
  • ✅ Works in Browsers
  • ✅ Broadcast Messages
  • ✅ Censorship Resistant

Browser Support

Chrome Firefox Opera Edge Brave Safari
Latest ✔ Latest ✔ Latest ✔ Latest ✔ Latest ✔ Latest ❓

Quickstart

Try now in Playground :

https://jsbin.com/suwesaliro/1/edit?html,output

NPM install:

npm i webpeerjs

Browser <script> tag :

Uses built-in JS files from latest release or CDN will make it's exports available as webpeerjs in the global namespace.

<script src="https://cdn.jsdelivr.net/npm/webpeerjs@0.1/dist/umd/webpeerjs.min.js"></script>

Example

import { webpeerjs } from 'webpeerjs'

void async function main() {

    const node = await webpeerjs.createWebpeer()
    
    console.log(`My node id : ${node.id}`)
    
    const [broadcast,listen,onmembersupdate] = node.joinRoom('globalroom')
    
    listen((message,id) => {
        console.log(`Message from ${id} : ${message}`)
    })
    
    onmembersupdate((data) => {
        console.log(`Members : ${data}`)
        broadcast('hello')
    })
    
}()

API

  • createWebpeer(config) - Create a new node.
    • config - Configuration object contain:
      • rtcConfiguration - (optional) Custom rtcConfiguration for WebRTC transport, currently the only transport available for direct peer-to-peer connectivity between browser.
  • id - Get the unique ID of the node as an identity in the global network.
  • status - Get the node status, returns connected or unconnected.
  • peers - Get all connected peers.
  • joinRoom(namespace) - Join to the room, returns an array of three functions (Broadcaster, onListenBroadcast, onMembersUpdate).
    • Broadcaster - Function to broadcast message to room members (limited to 1 message/second).
    • onListenBroadcast - Callback function that listen on incoming broadcast message.
    • onMembersUpdate - Callback function that listen on room members update.

API Docs

https://nuzulul.github.io/webpeerjs

License

MIT

Maintainers

Nuzulul Zulkarnain