2016-03-29 23 views
0

私はそれが角度+ socket.io問題だと思うので、私のブラウザのコンソールでこのエラーを取得しておいてください。ノード+ AngularJs + Socket.io:ネット:: ERR_CONNECTION_REFUSED

GET http://localhost:3000/socket.io/?EIO=3&transport=polling&t=LF3gkk7 net::ERR_CONNECTION_REFUSED 

Eventho私が話したアドバイスに従っ角度を変更するioのように:

ctrl.socketIo = io(); 
ctrl.socketIo = io.connect(); 
ctrl.socketIo = io.connect('http://localhost:3001'); 

いずれも機能していません!

これは私の角度コントローラがどのように見えるかです:

angular.module("app") 
    .controller("chatController", [ 
     'userService', 
     function (userService) { 

      var ctrl = this; 
      ctrl.messages = []; 

      ctrl.socketIo = io(); 
      ctrl.userName = userService.name; 

      ctrl.submit = function() { 

       ctrl.socketIo.emit("chat_message", ctrl.inputMessage); 

       ctrl.messages.push(ctrl.inputMessage);   

       ctrl.inputMessage = null; 
      }; 


      ctrl.socketIo.on("update_clients", function (msg) { 

       ctrl.messages.push(msg); 

      }); 

     }] 
    ); 

私のindex.htmlパスはdirsにを指している:

<!doctype html> 
<html> 
<head> 
//boilerplate... 
</head> 

<body ng-app="app"> 

//boilerplate... 

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

//boilerplate... 

</body> 
</html> 

あなたは私のディレクトリ構造のパスに見ることができるようにに正しく指していますsocket.io.js:

enter image description here

UPD ate

私はnetstat -a -pを実行すると、PORT 3000が使用されているようには見えません。

アップデート2:ローカルホストに接続しようとしていた私のアプリで

つのサービス:私は今、そこにソケットを必要としないので、3000ので、私はその部分を消去し、私は取得しています:

enter image description here

アップデート3バックエンドコード:

'use strict'; 

var express = require("express"); 
var app = express(); 
var http = require("http"); 
var server = http.createServer(app); 
var io = require("socket.io")(http); 

//use environment var PORT or 3001 
var portNum = 3001; 


//route handler 
app.get("/", function (req, res) { 

    res.sendFile("./index.html", {root: "./client/"}); 
}); 

app.use(express.static('./client')); 

io.on("connection", function (socket) { 

    socket.on("chat_message", function (msg) { 

     socket.broadcast.emit('update_clients', msg); 

    }); 
}); 


server.listen(portNum, function() { 
    console.log("listening on port: " + portNum); 
}); 
+0

ポートの不一致はありますか。あなたはポート「3000」と「3001」を使用しています。 –

+0

@MukeshSharma、私はノード側で使用しています: 'var portNum = process.env.PORT || 3001; '私は' netstat -a -p'を呼び出すとデジタル海洋VPSも使用していますが、PORT 3000が使用されていないようです – Jeka

+0

バックエンドがポート '3001でリッスンしているので、' Connection Refused' 'の場合、フロントエンドのアプリは「3000」に接続しようとしています。 –

答えて

1

あなたsocket.ioモジュールが正しく初期化されていなかったので、あなたは404を取得しています。
次のコードを試してください。

'use strict'; 

var express = require("express"); 
var app = express(); 
var http = require("http").Server(app); 
var io = require("socket.io")(http); 

//use environment var PORT or 3001 
var portNum = 3001; 


//route handler 
app.get("/", function (req, res) { 
    res.sendFile("./index.html", {root: "./client/"}); 
}); 

app.use(express.static('./client')); 

io.on("connection", function (socket) { 
    socket.on("chat_message", function (msg) { 
     socket.broadcast.emit('update_clients', msg); 
    }); 
}); 


http.listen(portNum, function() { 
    console.log("listening on port: " + portNum); 
}); 
+0

お世話になりました。 :) – Jeka

関連する問題