p2p-message
Version:
A simple and efficient P2P messaging library for browser-to-browser communication
105 lines (92 loc) • 3.09 kB
HTML
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>p2p-message</title>
<style>
body {
font-family: sans-serif;
margin: 20px;
}
h1 {
color: #333;
}
h2 {
color: #666;
}
pre {
background-color: #f4f4f4;
padding: 10px;
border: 1px solid #ddd;
overflow-x: auto;
}
code {
font-family: monospace;
}
</style>
</head>
<body>
<h1>p2p-message</h1>
<p>A simple and efficient peer-to-peer messaging library for direct browser-to-browser communication.</p>
<h2>Installation</h2>
<p>Install via NPM:</p>
<pre><code>npm install p2p-message</code></pre>
<p>Or include directly in your HTML:</p>
<pre><code><script src="https://unpkg.com/p2p-message@1.0.3/dist/messaging.min.js"></script></code></pre>
<h2>Usage</h2>
<pre><code>
// Initialize with configuration
const config = {
key: 'unique-network-key', // All peers using this key will connect
trackers: [ // Tracker servers for peer discovery
'wss://tracker.openwebtorrent.com'
],
onMessage: (peerId, message) => {
console.log(`Message from ${peerId}: ${message}`);
},
onConnect: (peerId) => {
console.log(`New peer connected: ${peerId}`);
}
};
// Create instance and connect
const p2p = new P2PMessage(config);
p2p.connect();
// Send message to a specific peer
p2p.send('peer-id-123', 'Hello, peer!');
// Broadcast implementation
const peers = new Set();
// Track connected peers
config.onConnect = (peerId) => {
peers.add(peerId);
console.log(`New peer connected: ${peerId}`);
};
// Broadcast to all peers
function broadcast(message) {
peers.forEach(peerId => {
p2p.send(peerId, message);
});
}
// Clean up when done
p2p.disconnect();
</code></pre>
<h2>Example</h2>
<p>See a live example of p2p-message in action: <a href="example.html" target="_blank">Live Demo</a></p>
<h2>API Reference</h2>
<h3>Constructor Options</h3>
<ul>
<li><code>key</code> (required): String - Unique network identifier. All peers using the same key will automatically connect</li>
<li><code>trackers</code> (optional): Array - List of WebSocket tracker URLs for peer discovery. Defaults to public trackers</li>
<li><code>onMessage</code> (optional): Function(peerId, message) - Called when receiving messages</li>
<li><code>onConnect</code> (optional): Function(peerId) - Called when a new peer connects</li>
<li><code>disableShaPrefixing</code> (optional): Boolean - Disables SHA prefixing for the infoHash. Defaults to false</li>
</ul>
<h3>Available Methods</h3>
<ul>
<li><code>connect()</code> - Connects to the P2P network through configured trackers</li>
<li><code>send(peerId, message)</code> - Sends a message to a specific peer</li>
<li><code>disconnect()</code> - Disconnects from network and cleans up resources</li>
<li><code>disconnectPeer(peerId)</code> - Disconnects a specific peer</li>
</ul>
</body>
</html>