SocketIO ERR_CONNECTION_REFUSED

2019-03-22 17:00发布

问题:

I am starting to use NodeJS and Socket.IO. I am trying to set up a basic example with a NodeJS http server and establish a Socket.IO connection to the server.

I am also using angular JS and basically what I want is that when a user presses a button then the connection to the server is established. However, when I try it I get this error

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

Here is my 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);
        });

    };

});

And on my test.html file:

<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>

I think that the error might be something related to the path I use when including the socket.io.js I have tried also using directly localhost:8080 in the path because I read it could be a solution but that didn't work. So please, I appreciate any help given. Thanks!

回答1:

I faced exactly the same issue. I did not see the ERR_CONNECTION_REFUSED in socket.io@~0.9. The error surfaced after I upgraded socket.io to 1.3.

I solved it by simply removing the URL from the client side constructor:

Change

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

To

var socket = io();  

As the socket.io tutorial showed: http://socket.io/get-started/chat/



回答2:

If your server is listening on port 8080, you need to connect to that port.

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

And as you're using a relative path, the socket.io lib will be served fine.

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


回答3:

It turns out that the socket.io was being installed in a funny folder and therefore it was not being recognised or loaded. I solved this by creating a package.json and declaring the dependencies there so that when I do npm install it installs the folder in the right place.

Also Ben Fortune was right and I also modified that...I hope this helps other people because I struggled A LOT to figure that out :)



回答4:

I was accessing IP of my cloud server to chat. suddenly The server was down.Then I got this polling error. Finally I figured out The problem is with that server.make sure your server is up.

I changed IP address to zero. please assume your server address

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