@wuyuchentr/p2p-data-channel
v5.0.0
Published
Point-to-point data sync channel based on WebRTC, supporting file chunk transfer with resume, decentralized pub/sub, Kademlia DHT node discovery, multi-node mesh, broadcast, NAT traversal, reliable delivery, and end-to-end encryption.
Maintainers
Readme
p2p-data-channel
Point-to-point data sync channel based on WebRTC, supporting file chunk transfer with resume, decentralized pub/sub, Kademlia DHT node discovery, multi-node mesh, broadcast, NAT traversal, reliable delivery, and end-to-end encryption.
Features (v5)
- File chunk transfer with ACK-based reliability and resume support
- Decentralized Pub/Sub over mesh (no central broker)
- Kademlia DHT-based node discovery (SHA-1 node IDs, XOR distance, k-buckets, FIND_NODE)
- WebSocket signaling server for bootstrap and WebRTC handshake
- Multi-node mesh network with DHT-driven peer discovery
- Broadcast messaging with TTL-based forwarding and dedup
- Direct P2P connection via WebRTC with STUN NAT traversal
- Reliable message delivery with ACK + automatic retransmission
- End-to-end encryption (ECDH + AES-256-GCM)
- Simple CLI for testing
Usage
# Start a signaling server
p2p-data-channel signal --port 9090
# Send a file to a peer
p2p-data-channel file ws://localhost:9090 --send ./photo.jpg --to <peerId>
# Listen for incoming files
p2p-data-channel file ws://localhost:9090 --room myroom
# Pub/Sub CLI
p2p-data-channel pub ws://localhost:9090 --room myroom --topic chat
# Join DHT mesh
p2p-data-channel mesh ws://localhost:9090 --room myroom --dht
# Two-node direct connection
p2p-data-channel peer ws://localhost:9090 --initiateFile Transfer API
const { joinMesh, createFileTransfer } = require('@wuyuchentr/p2p-data-channel');
const mesh = await joinMesh({ signal: 'ws://localhost:9090', room: 'myroom' });
const ft = createFileTransfer(mesh);
// Receive
ft.on('receive', (info) => console.log(`receiving ${info.name}`));
ft.on('complete', (info) => fs.writeFileSync(info.name, info.buffer));
// Send
ft.send('peer-id', 'photo.jpg', buffer);Roadmap
| Version | Feature | |---------|---------| | v1 | Two-node direct connection + reliable messaging | | v2 | Multi-node mesh network + broadcast | | v3 | Kademlia DHT node discovery | | v4 | Decentralized Pub/Sub | | v5 | File chunk transfer + resume |
