typescript + nodejs : ONE Network library as client / server TCP/IP and UDP/datagram supporting ipv4 AND ipv6

In Progress Posted 3 years ago Paid on delivery
In Progress Paid on delivery

We need a low level library in Typescript using NodeJS library :

This Network NodeJs Typescript Library is the template that must be used as starter kit for any NodeJs Typescript Library developed in our project.

By passing the type of the connection ( TCP or UDP/datagram ) AND behavior ( As client or As server ) to the library and options we need to establish :

- a multi clients server

- client

Acceptance criteria :

*********************

- Network Library needs to support

+ TCP/IP Client AND Server using the library [login to view URL]

+ UDP/datagram Client AND Server using the library [login to view URL]

+ DNS ([login to view URL] )

+ OS to support Windows 10+, Linux and MacOS

- IDE

+ VSCODE

+ Identify each extensions

- NPM packages

+ eslint

+ prettier

+ husky

+ git

+ jest

+ typedoc

+ winston

+ yargs or oclif

- Code linting

+ Branches, functions and lines code coverage are set at 100%

- [login to view URL]

The TypeScript complied code resides under le /lib folder.

The [login to view URL] file is generated based on the ./src/[login to view URL] file that export types, classes, functions, … that must ONLY be made visible to library consumers

As server and As Client :

===================

- Low level library

- Typescript + NodeJS

- be generic

- asynchronous (non blocking) and scalable by take advantage of multi-core CPUs (parallelism)

- resilient and fault tolerant

- support multiple platform (Windows 10, linux, MacOs)

- take care of the technical aspects of the communications schemes (connect, disconnect, reconnect, read, write, start/stop/pause/resume/.../Reload Config, ...)

- implement timeout on connect , read, write, ...

- provide logging with correlation for audit purpose and troubleshooting purpose on several targets (file, db, console with color, socket, ...)

- provide reusable components implementing the building bricks of Inbound/Outbound connectors

- be protocol agnostic but should provide extension points to allow the client of the library to implement their own protocols

- raise event each time something occurs (error, warning, status changed, connection status changed, Received data, Transmitted Data, ...) This should mainly be based on events raised by the library

- Supporting each Server Events

- Supporting each Socket Events

- Supporting Options config to handle the server AND Client

- send / receive ascii (encode/decode - utf8 / unicode / ... ) AND binaries data

- receive event : to have a process to parse the data and to trig an event ( like switch - case or xstate)

- Be able to expose the status of the Client AND server

- For UDP/datagram supporting unicast AND multicast

- Supporting Keep a Live

- Per send data to manage a timeout AND retries

- be configurable through JSON config file AND cli to manage Options config (yargs : [login to view URL] OR oclif : [login to view URL] )

- unit tests : using jest ( [login to view URL] )

+ unit test for TCP/IP as server / client

+ unit test for UDP/datagram as server / client

- integration tests

+ to test the server / client TCP/IP AND UDP AND DNS (each event , send datas, receive datas, start, stop, pause, resume, ... the connection, time out, keep a live )

- typedoc ( [login to view URL] )

- Metrics about connection Rx, Tx, cpu load

- [login to view URL]

To have a document describing :

+ dependencies

++ mention license + link

+ scripts

++ compile

++ eslint

++ unit tests

++ integration tests

++ coverage + badges generation

++ commit and push

++ generate documentation with typedoc

+ setup

+ cli

++ list of the parameters with sample

++ json file per type of connection and behavior and options

+ samples code

++ how to select

+++ type of connection, behavior, options

+++ As server or Client and TCP/ip or UDP/datagram

+++ DNS

+ logging service

+ License

Using a third party library, You need to respect his Intellectual properties.

Typescript DNS

Project ID: #26890049

About the project

Remote project Active 3 years ago