tcp-ip-connman
v1.0.6
Published
Connection manager for tcp/ip connections
Downloads
11
Maintainers
Readme
What
tcp-ip-connman
stands "tcp-ip Connection Manager". As the name says, it takes
care of connections for you, with automatic reconnects, heartbeat and events,
you don't need to worry if your connections are up or down, tcp-ip-connman
will take care of that for you.
With tcp-ip-connman
all you need to do is to connect, and forget all your
problems!
Why
TCP/IP connections are tricky, mainly becasuse of half-closed and half-open connections.
While Node.js does a decent job dealing with half-closed connections, we can't say the same for half-open connections.
Basically, if the end of a connection dies, the other end will remain open, like nothing happened.
This library takes care of half-open connections, by implementing a heartbeat and by having a event rich API to let you know everything you need.
If you don't want to use the events API, that's fine as well, as tcp-ip-connman
manages timeouts and connection drops automatically reconnecting for you.
How
Following are instructions on how to intsall and use tcp-ip-connman
. For
questions you can ask in the issues page:
Feel free to check the project's page for additional information on the API as well.
Install
npm install tcp-ip-connman --save
API
- connect
- disconnect
- isConnected
- send
- onClose
- onOpen
- onRead
- onRetry
- setConnectFn
Examples
Creating a connection manager with a custom heartbeat and connect:
const connmanager = require("tcp-ip-connman");
const heartBeat = heartBeatFactory();
heartBeat.setPing("Marco");
heartBeat.setPong("Polo");
heartBeat.setBeatInterval(50);
heartBeat.setBeatTimeout(150);
const client = connmanager(heartBeat);
client.connect({host: "localhost", port: 8080})
.then(() => console.log("success!")
.catch(console.log);
Creating a connection manager with a default PING, PONG and heartbeat:
const connmanager = require("tcp-ip-connman");
//Default PING is Buffer.from([0x01])
//Default PONG is Buffer.from([0x02])
//Default TIMEOUT and INTERVAL are from heartbeatjs (https://www.npmjs.com/package/heartbeatjs)
const client = connmanager();
client.connect({host: "localhost", port: 8080})
.then(() => console.log("success!")
.catch(console.log);
Using a previously created connman to define behaviors for the various events:
client.onOpen(online => {
console.log(`Connection established: ${online}`);
});
client.onClose(online => {
console.log(`Connection established: ${online}`);
});
client.onRead(data => {
console.log(`Data received: ${JSON.stringify(data)}`);
});
client.onRetry((error, num) => {
console.log(`Retry number ${num} due to error ${JSON.stringify(error)}`);
});