>PHP 프레임워크 >Workerman >작업자가 연결을 유지하는 방법

작업자가 연결을 유지하는 방법

尚
원래의
2019-12-06 14:50:304425검색

작업자가 연결을 유지하는 방법

일반적인 상황에서 클라이언트 연결이 끊어지면 서버는 fin 패킷을 수신한 후 클라이언트 연결이 끊어졌음을 학습하고 즉시 onClose 이벤트 콜백을 트리거합니다.

그러나 클라이언트 정전, 네트워크 종료, 네트워크 케이블 분리, 라우팅 실패 등과 같은 극단적인 상황이 있습니다. 이러한 극단적인 상황에서 클라이언트는 핀 패킷을 서버에 보낼 수 없으며 서버는 핀 패킷이 전송되었는지 알 수 없습니다. 연결이 끊어졌습니다. 클라이언트와 서버 사이에 정기적인 하트비트 데이터 전송이 있는 경우 상대적으로 적시에 연결 끊김이 발견되고 onClose 이벤트 콜백이 트리거됩니다.

또한 라우팅 노드 방화벽은 오랫동안 통신하지 않은 소켓 연결을 닫아 긴 소켓 연결이 끊어지게 만듭니다. 따라서 클라이언트와 서버는 연결이 끊어지지 않도록 정기적으로 하트비트 데이터를 보내야 합니다.

GatewayWorker에서 하트비트 감지를 구성하는 방법은 무엇입니까?

현재 GatewayWorker는 두 가지 유형의 하트비트 감지를 지원합니다. 서버는 하트비트가 수신되지 않는 경우 연결을 닫는 시간(초)을 설정합니다(권장). 또한 서버가 하트비트 데이터를 클라이언트에 정기적으로 전송하도록 지원합니다(권장하지 않음).

클라이언트는 정기적으로 하트비트를 보냅니다(권장)

클라이언트는 정기적으로 서버에 하트비트를 보냅니다(간격은 60초 미만이 바람직함). 서버 구성은 다음과 유사합니다.

$gateway = new Gateway("Websocket://0.0.0.0:8585");
$gateway->pingInterval = 55;
$gateway->pingNotResponseLimit = 1;
$gateway->pingData = '';

위 구성의 의미는 클라이언트 연결 pingInterval*pingNotResponseLimit=55초 후 55초 이내에 요청이 없으면 서버는 해당 클라이언트의 연결이 끊어진 것으로 간주한다는 것입니다. 서버는 연결을 닫고 onClose 콜백을 트리거합니다.

더 많은 워커맨 지식을 알고 싶으시면

workerman tutorial 칼럼을 주목해주세요.

위 내용은 작업자가 연결을 유지하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.