2014-07-02 17 views
21

Tôi bắt đầu sử dụng NodeJS và Socket.IO. Tôi đang cố gắng thiết lập một ví dụ cơ bản với một máy chủ http NodeJS và thiết lập kết nối Socket.IO với máy chủ.SocketIO ERR_CONNECTION_REFUSED

Tôi cũng đang sử dụng JS góc và về cơ bản những gì tôi muốn là khi người dùng nhấn một nút thì kết nối với máy chủ được thiết lập. Tuy nhiên, khi tôi thử nó, tôi nhận được lỗi này

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

Dưới đây là mã của tôi:

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

    }; 

}); 

Và trong hồ sơ test.html của tôi:

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

Tôi nghĩ rằng lỗi có thể là một cái gì đó liên quan đến con đường tôi sử dụng khi bao gồm cả socket.io.js Tôi đã thử còn sử dụng trực tiếp localhost: 8080 trong con đường bởi vì tôi đọc nó có thể là một giải pháp nhưng điều đó không hiệu quả. Vì vậy, xin vui lòng, tôi đánh giá cao sự giúp đỡ nào được đưa ra. Cảm ơn!

Trả lời

13

Nếu máy chủ của bạn đang nghe trên cổng 8080, bạn cần kết nối với cổng đó.

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

Và khi bạn đang sử dụng đường dẫn tương đối, socket.io lib sẽ được phân phối tốt.

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

tôi đã cố gắng hai giải pháp này trước khi (xin lỗi tôi không đề cập đến đó) nhưng tôi nhận được một lỗi tập tin không tìm thấy cho con đường socket.io.js, đó là lý do tại sao tôi đã cố gắng một trong những khác . Tôi không biết điều gì có thể là vấn đề. Tôi đã cài đặt socket.io bằng cách sử dụng npm install socket.io và thư mục node_modules chứa io socket nằm trong thư mục người dùng của tôi trên windows vì lý do nào đó và không nằm trong thư mục node_modules trong các tệp chương trình. Có thể có một cái gì đó để làm với vấn đề? Tôi đã cố gắng để cài đặt trên toàn cầu để xem nếu nó thay đổi thư mục vị trí nhưng nó không:/Tôi không biết những gì khác để thử – tampeta

3

Hóa ra là socket.io đang được cài đặt trong thư mục vui nhộn và do đó nó không được nhận dạng hoặc tải. Tôi đã giải quyết vấn đề này bằng cách tạo một package.json và khai báo các phụ thuộc ở đó để khi tôi cài đặt npm, nó sẽ cài đặt thư mục ở đúng nơi.

Cũng Bến tạp chí Fortune đã đúng và tôi cũng đã chỉnh sửa mà ... Tôi hy vọng điều này sẽ giúp những người khác bởi vì tôi đấu tranh rất nhiều để con số đó ra :)

40

tôi phải đối mặt với chính xác cùng một vấn đề. Tôi không thấy ERR_CONNECTION_REFUSED trong [email protected]~0.9. Lỗi xuất hiện sau khi tôi nâng cấp socket.io lên 1.3.

Tôi giải quyết nó bằng cách đơn giản loại bỏ URL từ các nhà xây dựng phía khách hàng:

Thay đổi

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

Để

var socket = io(); 

Như hướng dẫn socket.io cho thấy: http://socket.io/get-started/chat/

+0

Sử dụng URL ngầm cố định nó cho tôi là tốt, cảm ơn! – Dan

+0

Câu trả lời hay. Chỉ cần bổ sung những gì ví dụ cho biết: "Lưu ý rằng tôi không chỉ định bất kỳ URL nào khi tôi gọi io(), vì nó mặc định cố gắng kết nối với máy chủ lưu trữ trang." –

0

Tôi đã truy cập IP của máy chủ đám mây để trò chuyện. đột nhiên Máy chủ bị hỏng. Sau đó, tôi nhận được lỗi bỏ phiếu này. Cuối cùng tôi đã tìm ra vấn đề là với server.make chắc chắn máy chủ của bạn là lên.

Tôi đã thay đổi địa chỉ IP thành 0.xin giả định địa chỉ máy chủ của bạn

socket = io.connect('0.0.0.0:8110'); 
Các vấn đề liên quan