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!