Node.js 앱에서 "Ping"하는 방법은 무엇입니까?




(4)

내 node.js 응용 프로그램에서 서버에 ping을 수행하려고합니다.

그게 가능하니?

감사


ping (프로그래밍 가능)을 수행하려면 루트 액세스가 필요한 원시 소켓이 필요하므로 루트 권한이 필요합니다. Gradwohl's 발췌문을 따라 ping을 수행 할 수 있지만, 비싼 (상대적으로) 새로운 프로세스를 포크하고 있다는 것을 명심하십시오. 당신이 그것을 많이 할 필요가 없다면 (동시성) 이것은 확실히 작동 할 것입니다 :)

프로세스를 포킹하지 않고 node.js (전용)에서 수행하려면 몇 가지 옵션이 있다고 생각합니다. 둘 다 구현하기가 어렵습니다. ()

  1. ping 파이썬 라이브러리 를 node.js에 다시 쓰고 root 사용자로 program을 실행하십시오.
  2. node.js 용 asio c ++ 라이브러리 를 사용하여 node.js 용 c ++ 확장 / addon 작성 또한 icmp ping 을 수행하는 몇 가지 예가 있습니다.

node.js를 사용하지 않는 경우 :

  1. python ping 라이브러리 를 루트로 사용하고 redis를 통해 node.js 인스턴스와 통신합니다. => 구현하기가 쉽다. (거의 모든 작업이 있지만 오히려 빠르다고 생각한다.)
  2. asio c ++를 사용하여 c (++) 코드를 다시 작성하지만 node.js를 작성하는 대신 hiredis 를 통해 redis를 사용하는 node.js와 통신합니다.

side-note에서 node.js에 redis를 사용하는 방법 :


나는 ping-wrapper 저자입니다.

핑이 울리면 즉시 이벤트를들을 수 있습니다. 프로세스가 종료되면 자동으로 생성됩니다.


내 nodejs ping 랩퍼 yaping 사용할 수도 있습니다. 언젠가 우리는 nodejs에 원시 소켓을 얻을 것이고 우리는 우리 자신의 핑 패킷을 만들고 응답 시간에 대해 거짓말을 할 수있을 것이다. ;-)

이 간단한 함수는

  • DNS 조회 수행
  • 한 번 핑
  • 10 초 후 타임 아웃
  • ping이 제공하는 오류 코드를 모두 잘 전달하십시오.
  • 자식을 혼란에서 빠지게 만든다.

node-net-ping 은 원시 소켓을 사용하는 멋진 모듈입니다.

그리고 원시 소켓만을 찾고 있다면, 같은 개발자도 모듈을 가지고 있습니다 : node-raw-socket .





node.js