web-dev-qa-db-fra.com

Echec: erreur lors de l'établissement de la connexion: net :: ERR_CONNECTION_REFUSED

J'essaie de me connecter avec socket à mon serveur. Mon serveur exécute un socket serveur avec Rachet sur le port 8080. J'essaie d'exécuter ce code:

<script>   

    try{
    conn = new WebSocket('wss://localhost:8080');


conn.onclose = function (e)
{
        //checkUser();
}

conn.onopen = function(e) 
{
    console.log("test");
};

    }catch (error)
{
    console.log(error);
}

  </script>

Mais je reçois cette erreur:

WebSocket connection to 'wss://localhost:8080/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED

Lorsque j'essaie de me connecter depuis mon shell linux, je reçois ceci:

root@(none):~# telnet localhost 8080
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
28
dasdasd

CONNECTION_REFUSED est standard lorsque le port est fermé, mais il peut être rejeté car SSL échoue lors de l'authentification (une des milliards de raisons). Avez-vous configuré SSL avec Ratchet? (Apache est contourné) Avez-vous essayé sans SSL en JavaScript?

Je ne pense pas que Ratchet prenne en charge SSL de manière intégrée. Mais même si c'est le cas, vous voudrez d'abord essayer le protocole ws: //; c'est beaucoup plus simple, plus facile à déboguer et plus proche de telnet. Chrome ou le service de socket peut également générer l'erreur REFUSED si le service ne prend pas en charge SSL (car vous avez explicitement demandé SSL).

Cependant, le message refusé est probablement un problème côté serveur (généralement le port fermé).

5
btraas

Dans mon cas, la réponse est assez simple. Vérifiez soigneusement le port de l’URL codé en dur: c’est 8080. Pour une raison quelconque, la valeur a été changée en: par exemple 3030.

Il suffit d’actualiser le port de votre chaîne URL ajax en fonction de celui qui convient.

conn = new WebSocket('ws://localhost:3030'); //should solve the issue
1
Anton Lyhin

Premièrement, je voudrais essayer une connexion websocket non sécurisée. Supprimez donc l'un des s de l'adresse de connexion:

conn = new WebSocket('ws://localhost:8080');

Si cela ne fonctionne pas, je vérifierai ensuite les paramètres de pare-feu de votre serveur. Vous devez ouvrir le port 8080 tous les deux dans TCP_IN et TCP_OUT.

1
Nate