라이브러리 (ddp-client)를 편집하여 매 x 초마다 ping을 보내는 하트 비트 타이머를 사용했습니다. 그러나, 나는 또한 블루투스 하드웨어로 일부 작업을하고 있는데, 나는 때때로 블루투스가 이벤트 루프를 일시적으로 차단하는 것처럼 보이기 때문에 때로는 돌아 가지 않는 핑 (ping)을 담당한다고 생각한다. 이벤트 루프의 특정 기능에 우선 순위를 매길 수있는 방법이 있습니까? 그렇기 때문에 항상 다른 기능보다 먼저 실행됩니다. 서버에서 응답 메시지가 도착할 때 정확히 알 수 없기 때문에 setImmediate
이 적합 할 것이라고 생각하지 않습니다. 내가 블루투스 모듈없이 실행하면nodejs 함수 실행의 우선 순위 지정
every X seconds
if(ping outstanding) {
//Did not resolve in time
closeConnection()
} else {
ping outstanding = true
sendPing()
}
이 완벽하게 잘 작동 다음과 같이
타이머의 구현은 대략이다. 블루투스 모듈을 활성화하면 때때로 블루투스를 검색하는 데 걸리는 시간이 타이머 간격보다 길어 실제로 연결되어있는 동안 연결이 끊어지기 때문에 핑이 해결되지 않는 경우가 있습니다.
@robvandijk -이 답변에 대한 질문이 있습니까? 그렇다면 답장 옆에있는 체크 표시를 클릭하여 커뮤니티에 표시하고 stackoverflow에서 적절한 절차를 수행 한 데 대한 평판 포인트를 얻을 수도 있습니다. – jfriend00