TCP -Ping -Dienstprogramm mit einer synchronen API
⌛⇄
npm i tcp-ping-sync Die Bibliothek enthält zwei Methoden, ping und 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 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)
} ) ; Weitere Nutzungsbeispiele finden Sie in den Tests ( test.js ), die mit npm test ausgeführt werden können. Um die Tests mit Debug -Ausgabe auszuführen, führen Sie npm run test:debug .
Diese Bibliothek verfügt über eine optionale Abhängigkeit (NetLinkwrapper), die native Module kompilieren muss. Wenn Ihre Plattform es nicht kompiliert, wird eine alternative (aber langsamere) Abhängigkeit verwendet. In diesem Fall sollten Sie nur in Betracht ziehen, diese Bibliothek zu verwenden, wenn Sie wirklich eine synchrone Antwort benötigen . Wenn Async akzeptabel ist, möchten Sie stattdessen wahrscheinlich tcp-ping verwenden.
Diese Arbeit ist von Adam Paszkes tcp-ping (MIT; © 2014) inspiriert. Vielen Dank auch an Jacob Fischer für das Simulieren von synchronen Netzwerkhöhlen im Knoten und die Implementierung der Lösung als Synchronisation.