Maison  >  Article  >  cadre php  >  Que dois-je faire si le client Workerman ne parvient pas à se connecter ?

Que dois-je faire si le client Workerman ne parvient pas à se connecter ?

藏色散人
藏色散人original
2019-12-12 14:19:154158parcourir

Que dois-je faire si le client Workerman ne parvient pas à se connecter ?

ouvrierQue dois-je faire si le client ne parvient pas à se connecter ?

Cause de l'échec de la connexion client

Les clients signalent généralement deux erreurs en cas d'échec de la connexion, de refus de connexion et d'expiration du délai de connexion

connexion refuser

Généralement pour les raisons suivantes :

1. Le port auquel le client se connecte est incorrect

2. L'adresse IP est erronée

3. Si le client utilise un nom de domaine pour se connecter, le nom de domaine peut pointer vers la mauvaise adresse IP du serveur

4. Le serveur n'est pas démarré ou le port n'est pas surveillé.

5. Un logiciel proxy réseau est utilisé

6. L'IP de surveillance du serveur et l'adresse d'accès ne sont pas dans le même segment d'adresse. Par exemple, si le serveur surveille 127.0.0.1, le client ne peut se connecter que via 127.0.0.1 et ne peut pas se connecter via l'IP LAN ou l'IP d'un réseau externe. Il est recommandé que l'adresse d'écoute soit définie sur 0.0.0.0, afin que la machine locale, le réseau interne et le réseau externe puissent se connecter.

délai de connexion

Généralement pour les raisons suivantes :

1. Le pare-feu du serveur bloque la connexion. Vous pouvez fermer temporairement le pare-feu et essayer.

2. S'il s'agit d'un serveur cloud, le groupe de sécurité peut également empêcher l'établissement de la connexion. Vous devez ouvrir le port correspondant en arrière-plan de gestion

3. existe ou n'est pas démarré

4 Si le client utilise un nom de domaine pour se connecter, le nom de domaine peut pointer vers la mauvaise adresse IP du serveur

5. L'adresse IP à laquelle le client accède est l'intranet du serveur. IP, et le client et le serveur ne sont pas dans le même LAN

Autres rapports d'erreurs

Si l'erreur signalée n'est pas un refus de connexion ni un délai d'expiration de connexion, il s'agit généralement pour les raisons suivantes :

1. Le protocole de communication utilisé par le client est incohérent avec le serveur.

Par exemple, le serveur utilise le protocole de communication http et le client ne peut pas se connecter en utilisant le protocole de communication websocket. Si le client se connecte à l'aide du protocole websocket, le serveur doit également utiliser le protocole websocket. Si le serveur est un service du protocole http, le client doit alors utiliser le protocole http pour y accéder.

Le principe ici est similaire à celui-ci : si vous souhaitez communiquer avec des Britanniques, utilisez l'anglais. Si vous souhaitez communiquer avec des Japonais, utilisez le japonais. Le langage ici est similaire à un protocole de communication. Les deux parties (client et serveur) doivent utiliser le même langage pour communiquer, sinon la communication ne sera pas possible.

Les erreurs courantes causées par des protocoles de communication incohérents sont :

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

Solution :

À partir des deux erreurs ci-dessus, on peut voir que le client utilise la connexion ws et le websocket protocole. Le serveur doit également utiliser le protocole websocket. Certains codes de surveillance côté serveur doivent spécifier le protocole websocket pour communiquer, comme le suivant

S'il s'agit d'un gatewayWorker, la partie surveillance du code est similaire à

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

S'il s'agit d'un Workerman Oui

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

Recommandé :tutoriel Workerman

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn