NodeJS TCP-Ping-Beispiel (Typescript)

Das folgende Typescript-Beispiel ermöglicht es Ihnen, eine IP-Adresse oder einen Hostnamen zu “pingen”, nicht mit ICMP, sondern mit einer TCP-Verbindung zu einem bestimmten Port. Wenn die TCP-Verbindung akzeptiert wird, wird der Ping als true aufgelöst. Wenn keine Verbindung hergestellt werden kann, wird er als false zurückgegeben. In jedem Fall werden keine Daten ausgetauscht und die Verbindung wird sofort nach dem Aufbau geschlossen.

tcp_ping.ts
import { Socket } from "net";

/**
 * Basic TCP ping that returns true if the connection is successful, false if it fails
 * The socket is closed after the connection attempt, no data is exchanged.
 */
export function TCPConnectPing(ipAddress, timeout=5000, port=80): Promise<boolean> {
    return new Promise((resolve) => {
      const socket = new Socket();
      let connected = false;

      // Set a timeout for the connection attempt
      const timer = setTimeout(() => {
        if (!connected) {
          socket.destroy();
          resolve(false); // Connection timed out
        }
      }, timeout);

      socket.connect(port, ipAddress, () => {
        clearTimeout(timer);
        connected = true;
        socket.destroy();
        resolve(true); // Connection successful
      });

      socket.on('error', (error) => {
        clearTimeout(timer);
        if (!connected) {
          resolve(false); // Connection failed due to error
        }
      });
    });
  }

Check out similar posts by category: Networking, NodeJS