2014-07-02 22 views
21

Sto iniziando a utilizzare NodeJS e Socket.IO. Sto cercando di impostare un esempio di base con un server http NodeJS e stabilire una connessione Socket.IO al server.SocketIO ERR_CONNECTION_REFUSED

Sto anche utilizzando JS angolare e sostanzialmente quello che voglio è che quando un utente preme un pulsante, viene stabilita la connessione al server. Tuttavia, quando provo io ottenere questo errore

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

Ecco il mio codice:

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

    }; 

}); 

E sul mio file 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> 

Penso che l'errore potrebbe essere qualcosa legato al percorso che uso quando comprese le socket.io.js ho provato anche utilizzando direttamente localhost: 8080 in il percorso perché l'ho letto potrebbe essere una soluzione ma non ha funzionato. Quindi, per favore, apprezzo qualsiasi aiuto dato. Grazie!

risposta

13

Se il server è in ascolto sulla porta 8080, è necessario connettersi a tale porta.

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

E come si sta utilizzando un percorso relativo, il socket.io lib sarà servito bene.

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

ho provato queste due soluzioni prima (scusate non ho detto che) ma ottengo un errore di file non trovato per il percorso socket.io.js, è per questo che ho provato l'altra . Non so quale potrebbe essere il problema. Ho installato socket.io utilizzando npm install socket.io e la cartella node_modules contenente socket io si trovano nella cartella degli utenti su Windows per qualche motivo e non nella cartella node_modules che si trova nei file di programma. Potrebbe avere qualcosa a che fare con il problema? Ho provato a installare a livello globale per vedere se ha cambiato la cartella di posizione ma non ha funzionato:/Non so che altro provare – tampeta

3

Si scopre che il socket.io è stato installato in una cartella divertente e quindi non è stato riconosciuto o caricato. Ho risolto questo creando un package.json e dichiarando le dipendenze in modo che quando installo npm installa la cartella nel posto giusto.

anche Ben Fortune era giusto e ho anche modificato che ... Spero che questo aiuta altre persone, perché ho faticato molto a capirlo :)

40

ho affrontato esattamente lo stesso problema. Non ho visto ERR_CONNECTION_REFUSED in [email protected]~0.9. L'errore è emerso dopo aver aggiornato socket.io a 1.3.

ho risolto semplicemente rimuovendo l'URL dal costruttore lato client:

Change

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

Per

var socket = io(); 

Come il tutorial socket.io mostrato: http://socket.io/get-started/chat/

+0

Utilizzando l'URL implicito risolto anche per me, grazie! – Dan

+0

Bella risposta. Semplicemente complementando quello che dice l'esempio: "Notate che non sto specificando alcun URL quando chiamo io(), dal momento che per impostazione predefinita tenta di connettersi all'host che serve la pagina." –

0

Stavo accedendo all'IP del mio server cloud per chattare. improvvisamente il server era inattivo. Poi ho ricevuto questo errore di polling. Finalmente ho capito che il problema è con quel server. Assicurati che il tuo server sia attivo.

Ho cambiato l'indirizzo IP a zero.Si prega di assumere l'indirizzo del server

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