SocketIO ERR_CONNECTION_REFUSED

时间:2014-07-02 08:17:17

标签: javascript node.js angularjs socket.io

我开始使用NodeJS和Socket.IO。我正在尝试使用NodeJS http服务器建立一个基本示例,并建立与服务器的Socket.IO连接。

我也使用角度JS,基本上我想要的是当用户按下按钮时,建立与服务器的连接。但是,当我尝试它时,我收到此错误

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

这是我的代码:

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);
        });

    };

});

在我的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>

我认为错误可能与我在使用socket.io.js时使用的路径有关。我也试过在路径中直接使用localhost:8080因为我读过它可能是一个解决方案但是没有&#39工作。所以,请感谢任何帮助。谢谢!

4 个答案:

答案 0 :(得分:46)

我遇到了完全相同的问题。我没有在socket.io@~0.9中看到ERR_CONNECTION_REFUSED。将socket.io升级到1.3后,错误浮出水面。

我通过简单地从客户端构造函数中删除URL来解决它:

更改

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

var socket = io();  

正如socket.io教程所示:http://socket.io/get-started/chat/

答案 1 :(得分:14)

如果您的服务器正在侦听端口8080,则需要连接到该端口。

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

当您使用相对路径时,socket.io lib将会正常运行。

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

答案 2 :(得分:3)

事实证明,socket.io正安装在一个有趣的文件夹中,因此无法识别或加载。我通过创建一个package.json并在那里声明依赖项来解决这个问题,这样当我执行npm install时,它会在正确的位置安装该文件夹。

Ben Fortune也是对的,我也修改了......我希望这对其他人有所帮助,因为我很难解决这个问题:)

答案 3 :(得分:0)

我正在访问我的云服务器的IP以进行聊天。突然服务器坏了。然后我得到了这个轮询错误。最后我发现问题出在那个服务器上。确保你的服务器已启动。

我将IP地址更改为零。请假设您的服务器地址

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