Heim > Artikel > PHP-Framework > Was soll ich tun, wenn der Workerman-Client keine Verbindung herstellen kann?
ArbeiterWas soll ich tun, wenn der Client keine Verbindung herstellen kann?
Ursache für Client-Verbindungsfehler
Clients melden im Allgemeinen zwei Fehler, wenn die Verbindung fehlschlägt: Verbindungsverweigerung und Verbindungs-Timeout
Verbindung Ablehnen
Im Allgemeinen aus folgenden Gründen:
Der Port, mit dem der Client eine Verbindung herstellt, ist falsch
Der Domänenname, mit dem sich der Client verbindet, oder der IP ist falsch
3. Wenn der Client einen Domänennamen für die Verbindung verwendet, verweist der Domänenname möglicherweise auf die falsche Server-IP
4. Der Server ist nicht gestartet oder der Port wird nicht überwacht
5. Netzwerk-Proxy-Software wird verwendet
6. Die Serverüberwachungs-IP und die Zugriffsadresse liegen nicht im selben Adresssegment. Wenn der Server beispielsweise 127.0.0.1 überwacht, kann der Client nur eine Verbindung über 127.0.0.1 herstellen und keine Verbindung über LAN-IP oder externe Netzwerk-IP herstellen. Es wird empfohlen, die Abhöradresse auf 0.0.0.0 festzulegen, damit der lokale Computer, das interne Netzwerk und das externe Netzwerk eine Verbindung herstellen können.
Verbindungs-Timeout
Normalerweise aus folgenden Gründen:
1. Die Server-Firewall blockiert die Verbindung vorübergehend und versucht es
2. Wenn es sich um einen Cloud-Server handelt, verhindert die Sicherheitsgruppe möglicherweise auch den Verbindungsaufbau. Sie müssen den entsprechenden Port im Verwaltungshintergrund öffnen.
3 vorhanden oder nicht gestartet
4. Wenn der Client einen Domänennamen verwendet, um eine Verbindung herzustellen, verweist der Domänenname möglicherweise auf die falsche Server-IP
5. Die IP, auf die der Client zugreift, ist das Intranet des Servers IP und der Client und der Server befinden sich nicht im selben LAN
Andere Fehlerberichte
Wenn es sich bei dem gemeldeten Fehler nicht um Verbindungsverweigerung und Verbindungs-Timeout handelt, ist dies im Allgemeinen der Fall Aus folgenden Gründen:
1. Das vom Client verwendete Kommunikationsprotokoll stimmt nicht mit dem Server überein.
Zum Beispiel verwendet der Server das HTTP-Kommunikationsprotokoll und der Client kann keine Verbindung über das WebSocket-Kommunikationsprotokoll herstellen. Wenn der Client eine Verbindung über das Websocket-Protokoll herstellt, muss der Server auch das Websocket-Protokoll verwenden. Wenn der Server ein Dienst des HTTP-Protokolls ist, muss der Client für den Zugriff das HTTP-Protokoll verwenden.
Das Prinzip hier ähnelt dem, wenn Sie mit Briten kommunizieren möchten, dann verwenden Sie Englisch. Wenn Sie mit Japanern kommunizieren möchten, verwenden Sie Japanisch. Die Sprache ähnelt hier einem Kommunikationsprotokoll. Beide Parteien (Client und Server) müssen zur Kommunikation dieselbe Sprache verwenden, sonst ist keine Kommunikation möglich.
Häufige Fehler, die durch inkonsistente Kommunikationsprotokolle verursacht werden, sind:
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
Lösung:
Aus den beiden oben genannten Fehlern ist ersichtlich, dass der Client die WS-Verbindung und den Websocket verwendet Protokoll. Der Server muss auch das WebSocket-Protokoll verwenden. Einige der serverseitigen Überwachungscodes müssen das WebSocket-Protokoll für die Kommunikation angeben, wie zum Beispiel das Folgende:
Wenn es sich um einen GatewayWorker handelt, ist der Überwachungsteil des Codes ähnlich wie
// websocket协议,这样客户端才能用ws://...来连。xxxx为端口不用改动 $gateway = new Gateway('websocket://0.0.0.0:xxxx');
Wenn es ein Workerman ist, ja
// websocket协议,这样客户端才能用ws://...来连。xxxx为端口不用改动 $worker = new Worker('websocket://0.0.0.0:xxxx');
Empfohlen:Workerman-Tutorial
Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn der Workerman-Client keine Verbindung herstellen kann?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!