web-dev-qa-db-ja.com

SocketIO ERR_CONNECTION_REFUSED

NodeJSとSocket.IOを使用し始めています。 NodeJS httpサーバーで基本的な例をセットアップし、サーバーへのSocket.IO接続を確立しようとしています。

また、angular 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を直接使用することも試みました。だから、助けてくれてありがとう。ありがとう!

29
tampeta

私はまったく同じ問題に直面しました。 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/

48
leon

サーバーがポート8080でリッスンしている場合、そのポートに接続する必要があります。

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

また、相対パスを使用しているため、socket.io libは問題なく提供されます。

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

Socket.ioが面白いフォルダーにインストールされていたため、認識もロードもされていなかったことがわかりました。 package.jsonを作成し、依存関係を宣言することでこれを解決しました。npminstallを実行すると、適切な場所にフォルダーがインストールされます。

また、ベンフォーチュンは正しかったし、私もそれを修正しました...私はそれを理解するのにたくさん苦労したので、これが他の人を助けることを願っています:)

3
tampeta