webpeerjs

WebPEER.js

Decentralized P2P JS library for communication between applications in 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 - https://nuzulul.github.io/webpeerjs/demo/

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

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,members] = node.joinRoom('globalroom')
	
	listen((message,id) => {
		console.log(`Message from ${id} : ${message}`)
	})
	
	members((data) => {
		console.log(`Members : ${data}`)
		broadcast('hello')
	})
	
}()

API

API Docs

https://nuzulul.github.io/webpeerjs

License

MIT

Maintainers

Nuzulul Zulkarnain