reliable-udp

0.2.0 • Public • Published

DEPRECATED

This library is deprecated in favor of node-udp-messaging which has defined more managable goals.

Current state of this library does not allow stable transfers of big ammounts of data.

node-reliable-udp Build Status Package Version License Dependencies codecov

A reliable communication protocol over UDP with holepunching for Node.js.


Goal

Implementing NAT holepunching with TCP is very tricky and does not work on every configuration. This project aims to deliver a tool to establish a reliable communication stream (TCP-like) over UDP for use in P2P systems. Communication stability has the priority over speed in this project.

Installation

Node >=8.9.0 is required.

npm install --save reliable-udp

To perform tests use:

cd node_modules/reliable-udp
npm t

Usage

Beware this project is still in development. There may be serious bugs or performance issues over time.

(async () => {
    // Create a reliable UDP socket
    const ReliableUDPSocket = require('reliable-udp');
    const server = new ReliableUDPSocket({ port: 12345 });
    await server.bind();
 
    // Connect to another peer
    const peer = await server.connect('127.0.0.1', 12345);
 
    // Send some raw data as a stream
    const data = Buffer.from("SomeGenericDataHere");
    peer.sendBuffer(data);
 
    // Receive raw data as a stream
    peer.on('data', (data) => {
        console.log(`Received: ${data}`);
    });
 
    // Execute holepunching (get an address and port that another peer over the internet can use to reach this peer)
    const hole = await server.discoverSelf();
 
    // Close a particular session
    peer.close();
 
    // Close all current sessions and unbind
    server.close();
})();

Contributing

The source is documented with JSDoc. To generate the documentation use:

npm run docs

Extra debugging information is printed using the debug module:

DEBUG=reliable-udp:* npm t

The documentation will be put in the new docs directory.

To introduce an improvement please fork this project, commit changes in a new branch to your fork and add a pull request on this repository pointing at your fork. Please follow these style recommendations when working on the code:

  • Use tabs (yup).
  • Use async/await and/or Promise where possible.
  • Features must be properly tested.
  • New methods must be properly documented with jscode style comments.

Readme

Keywords

Package Sidebar

Install

npm i reliable-udp

Weekly Downloads

3

Version

0.2.0

License

MIT

Unpacked Size

61.1 kB

Total Files

21

Last publish

Collaborators

  • walasprime