A simple and efficient peer-to-peer messaging library for direct browser-to-browser communication.
Install via NPM:
npm install p2p-message
Or include directly in your HTML:
<script src="https://unpkg.com/p2p-message@1.0.3/dist/messaging.min.js"></script>
// 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();
See a live example of p2p-message in action: Live Demo
key (required): String - Unique network identifier. All peers using the same key will automatically connecttrackers (optional): Array - List of WebSocket tracker URLs for peer discovery. Defaults to public trackersonMessage (optional): Function(peerId, message) - Called when receiving messagesonConnect (optional): Function(peerId) - Called when a new peer connectsdisableShaPrefixing (optional): Boolean - Disables SHA prefixing for the infoHash. Defaults to falseconnect() - Connects to the P2P network through configured trackerssend(peerId, message) - Sends a message to a specific peerdisconnect() - Disconnects from network and cleans up resourcesdisconnectPeer(peerId) - Disconnects a specific peer