tcp-ping-sync
TCP ping utility with a synchronous API
💻⌛️⇄🌏
Install
npm i tcp-ping-sync
Usage
The library exposes two methods, ping
and probe
:
const ping probe = ; const response = ;console;// {// 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 = ;console;// true
API
const ping probe = ; // Probe (does a single ping attempt succeed?) const isRemoteReachable = ; const isLocalReachable = ; // 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)} = ;
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.