2.0.0 • Published 6 years ago

tcp-ping-sync v2.0.0

Weekly downloads
4
License
ISC
Repository
github
Last release
6 years ago

Install

npm i tcp-ping-sync

Usage

The library exposes two methods, ping and probe:

const { ping, probe } = require('tcp-ping-sync');

const response = ping({ host: 'google.com', port: 443 });
console.log(response);
// {
//   results: [
//     { seq: 0, time: 126.462211 },
//     { seq: 1, time: 113.164184 },
//     { seq: 2, time: 132.048925 },
//     { seq: 3, time: 148.315887 },
//     { seq: 4, time: 137.088763 },
//     { seq: 5, time: 105.050291 },
//     { seq: 6, time: 105.028794 },
//     { seq: 7, time: 109.297229 },
//     { seq: 8, time: 102.262321 },
//     { seq: 9, time: 112.281641 }
//   ],
//   stats: {
//     min: 102.26232,
//     avg: 119.10002450000002,
//     max: 148.315887,
//     stddev: 15.019185518208955
//   },
//   settings: {
//     host: 'google.com',
//     port: 443,
//     attempts: 10
//   }
// }

const isGoogleReachable = probe('google.com');
console.log(isGoogleReachable);
// true

API

const { ping, probe } = require('tcp-ping-sync');

// Probe (does a single ping attempt succeed?)

const isRemoteReachable = probe(
  (host = String), //   (default: 'localhost')
  (port = Number) //    (default: 80)
);

const isLocalReachable = probe(
  (port = Number) //    (default: 80)
);

// Ping

const {
  results = [
    {
      seq: Number, //   Sequence [0...attempts-1]
      time: Number //   Response time
    }
    // ...
  ],
  stats = {
    min: Number, //     Fastest response time
    max: Number, //     Slowest response time
    avg: Number, //     Average response time
    stddev: Number //   Standard deviation
  },
  settings: Object //   Resolved arguments (host, port & attempts)
} = ping({
  host: String, //      Hostname/IP address   (default: 'localhost')
  port: Number, //      Port number           (default: 80)
  attempts: Number //   Number of attempts   (default: 10)
});

More usage examples can be found in the tests (test.js), which can be run with npm test. To execute the tests with debug output, run npm run test:debug.

Warning

This library has an optional dependency (netlinkwrapper) which needs to compile native modules. If your platform fails to compile it, an alternative (but slower) dependency will be used. In this case, you should only consider using this library if you really need a synchronous response. If async is acceptable, you'll probably want to use tcp-ping instead.

Credits

This work is inspired by Adam Paszke's tcp-ping (MIT; © 2014). Thanks also to Jacob Fischer for working out how to simulate synchronous network sockets in Node and implementing the solution as sync-socket.