> PHP 프레임워크 > Workerman > 작업자 클라이언트가 연결할 수 없으면 어떻게 해야 합니까?

작업자 클라이언트가 연결할 수 없으면 어떻게 해야 합니까?

藏色散人
풀어 주다: 2019-12-12 14:19:15
원래의
4228명이 탐색했습니다.

작업자 클라이언트가 연결할 수 없으면 어떻게 해야 합니까?

workerman클라이언트 연결이 안되면 어떻게 해야 하나요?

클라이언트 연결 실패 원인

클라이언트는 일반적으로 연결 거부 및 연결 시간 초과라는 두 가지 오류를 보고합니다. 클라이언트가 연결한 도메인 이름이 잘못되었습니다

2. 클라이언트가 연결한 도메인 이름이나 IP가 잘못되었습니다3. 클라이언트가 도메인 이름을 사용하여 연결하는 경우 도메인 이름이 잘못된 서버 IP를 가리킬 수 있습니다. 서버가 시작되지 않거나 포트가 모니터링되지 않습니다

5. 네트워크 프록시 소프트웨어가 사용됩니다

6. 서버 모니터링 IP와 액세스 주소가 동일한 주소 범위에 없습니다. 예를 들어 서버가 127.0.0.1을 모니터링하는 경우 클라이언트는 127.0.0.1을 통해서만 연결할 수 있고 LAN IP나 외부 네트워크 IP를 통해서는 연결할 수 없습니다. 로컬 시스템, 내부 네트워크 및 외부 네트워크를 연결할 수 있도록 수신 주소를 0.0.0.0으로 설정하는 것이 좋습니다.

connection timeout(연결 시간 초과)

일반적으로 다음과 같은 이유로 인해:

1. 서버 방화벽이 연결을 일시적으로 차단할 수 있습니다.

2. 보안 그룹이 연결을 방해할 수도 있으므로 관리 백그라운드에서 해당 포트를 열어야 합니다

3. 서버가 존재하지 않거나 시작되지 않습니다4. , 도메인 이름이 잘못된 서버 IP를 가리킬 수 있습니다

5. 클라이언트가 액세스한 IP가 서버 네트워크 IP 내에 있고 클라이언트와 서버가 동일한 LAN에 있지 않습니다

기타 오류가 보고됩니다

보고된 오류는 연결 거부 및 연결 시간 초과가 아니며 일반적으로 다음과 같은 이유 때문에 발생합니다:

1. 클라이언트가 사용하는 통신 프로토콜이 서버와 일치하지 않습니다.

예를 들어 서버가 http 통신 프로토콜을 사용하는 경우 클라이언트는 websocket 통신 프로토콜을 사용하여 연결할 수 없습니다. 클라이언트가 websocket 프로토콜을 사용하여 연결하는 경우 서버도 websocket 프로토콜을 사용해야 합니다. 서버가 http 프로토콜 서비스인 경우 클라이언트는 액세스하려면 http 프로토콜을 사용해야 합니다.

여기의 원칙은 영국인과 소통하려면 영어를 사용하는 것과 비슷합니다. 일본인과 대화하고 싶다면 일본어를 사용하세요. 여기서의 언어는 통신 프로토콜과 유사합니다. 양쪽(클라이언트와 서버)이 동일한 언어를 사용하여 통신해야 합니다. 그렇지 않으면 통신이 불가능합니다. 일관되지 않은 통신 프로토콜로 인해 발생하는 일반적인 오류는 다음과 같습니다.

WebSocket connection to 'ws://xxx.com:xx/' failed: Error during WebSocket handshake: Unexpected response code: xxx
WebSocket connection to 'ws://xxx.com:xx/' failed: Error during WebSocket handshake: net::ERR_INVALID_HTTP_RESPONSE
로그인 후 복사

해결 방법:

위의 두 오류에서 클라이언트가 ws 연결과 websocket 프로토콜을 사용하는 것을 볼 수 있습니다. 서버도 websocket 프로토콜을 사용해야 합니다. 서버측 모니터링 코드 중 일부는 다음과 같이 websocket 프로토콜을 지정하여 통신해야 합니다.

gatewayWorker인 경우 코드의 모니터링 부분은 비슷합니다

// websocket协议,这样客户端才能用ws://...来连。xxxx为端口不用改动
$gateway = new Gateway('websocket://0.0.0.0:xxxx');
로그인 후 복사

Workerman이라면

// websocket协议,这样客户端才能用ws://...来连。xxxx为端口不用改动
$worker = new Worker('websocket://0.0.0.0:xxxx');
로그인 후 복사

추천:

workerman tutorial

위 내용은 작업자 클라이언트가 연결할 수 없으면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿