web-dev-qa-db-fra.com

SocketIO ERR_CONNECTION_REFUSED

Je commence à utiliser NodeJS et Socket.IO. J'essaie de configurer un exemple de base avec un serveur http NodeJS et d'établir une connexion Socket.IO avec le serveur. 

J'utilise également JS angulaire et, fondamentalement, ce que je veux, c'est que lorsqu'un utilisateur appuie sur un bouton, la connexion au serveur est établie. Cependant, lorsque j'essaie, j'obtiens cette erreur 

GET http://localhost/socket.io/?EIO=2&transport=polling&t=1404288173776-3 net::ERR_CONNECTION_REFUSED

Voici mon code:

server.js

var http = require('http');
var server= http.createServer(handler);
var io = require('socket.io')(server);

server.listen(8080);

function handler(req, res) {
    res.writeHead(200);
    res.end('Hello Http');
}

io.on('connection', function (socket){
    socket.emit('news', { hello: 'world' });
    console.log('connected!');
});

app.js

var app = angular.module('testApp', ['ngRoute']);

app.controller('TestCtrl', function ($scope){

    $scope.msg= "";

    $scope.try = function (){

        $scope.msg= "ALO"

        var socket = io('http://localhost');

        socket.on('news', function (data) {
            console.log(data);
        });

    };

});

Et sur mon fichier test.html:

<body ng-controller="TestCtrl">

    <h2>{{msg}}</h2>
    <button ng-click="try()">Try</button>

    <script src="../js/angular.min.js"></script>
    <script src="../js/angular-route.min.js"></script>
    <script src="../js/app.js"></script>

    <script src="../node_modules/socket.io/node_modules/socket.io-client/socket.io.js"></script>

<!-- <script src="/socket.io/socket.io.js"></script> -->

</body>

Je pense que l'erreur pourrait être liée au chemin que j'utilise en incluant le socket.io.js. J'ai aussi essayé d'utiliser directement localhost: 8080 dans le chemin car je l'ai lu, cela pourrait être une solution, mais cela n'a pas fonctionné. Alors s'il vous plaît, j'apprécie toute aide donnée. Merci!

25
tampeta

J'ai fait face exactement au même problème. Je n'ai pas vu le ERR_CONNECTION_REFUSED dans socket.io@~0.9. L'erreur est apparue après la mise à niveau de socket.io vers la version 1.3.

Je l'ai résolu en supprimant simplement l'URL du constructeur côté client:

Changement 

var socket = io('http://localhost');

À

var socket = io();  

Comme le montre le tutoriel socket.io: http://socket.io/get-started/chat/

42
leon

Si votre serveur écoute sur le port 8080, vous devez vous connecter à ce port. 

var socket = io('http://localhost:8080');

Et comme vous utilisez un chemin relatif, la bibliothèque socket.io sera bien servie.

<script src="/socket.io/socket.io.js"></script>
13
Ben Fortune

Il s'avère que le fichier socket.io était en cours d'installation dans un dossier amusant et qu'il n'était donc ni reconnu ni chargé. J'ai résolu ce problème en créant un package.json et en y déclarant les dépendances. Ainsi, lorsque je procède à l'installation de npm, il installe le dossier au bon endroit.

Ben Fortune avait également raison et j'ai également modifié cela ... J'espère que cela aidera d'autres personnes, car j'ai beaucoup lutté pour résoudre ce problème :)

3
tampeta

J'étais en train d'accéder à l'IP de mon serveur cloud pour discuter. Soudain, le serveur était en panne. Ensuite, j'ai eu cette erreur d'interrogation. Enfin, j'ai compris que le problème venait de ce serveur. Assurez-vous que votre serveur est opérationnel.

J'ai changé l'adresse IP à zéro. s'il vous plaît assumer votre adresse de serveur

socket = io.connect('0.0.0.0:8110');
0
Kumaresan Perumal