2015-03-17 20 views
11

Socket.io ich zu einem socket.io-Client mit dem folgenden Code zu verbinden versuchen:Knoten js - Socket.io-Client verbindet nicht Server

Server:

// Load requirements 
var http = require('http'), 
    io = require('socket.io'); 

// Create server & socket 
var server = http.createServer(function(req, res){ 

    // Send HTML headers and message 
    res.writeHead(404, {'Content-Type': 'text/html'}); 
    res.end('<h1>Aw, snap! 404</h1>'); 
}); 
server.listen(8080); 
io = io.listen(server); 

// Add a connect listener 
io.sockets.on('connection', function(socket) { 

    console.log('Client connected.'); 

    // Disconnect listener 
    socket.on('disconnect', function() { 
     console.log('Client disconnected.'); 
    }); 
}); 

-Client :

console.log('1'); 

// Connect to server 
var io = require('socket.io-client') 
var socket = io.connect('localhost:8080', {reconnect: true}); 

console.log('2'); 

// Add a connect listener 
socket.on('connect', function(socket) { 
    console.log('Connected!'); 
}); 

console.log('3'); 

Ich erhalte nicht das Connected-Konsolenprotokoll oder Client Connected-Konsolenprotokoll und ich weiß nicht warum! Das Codebeispiel stammt aus einer anderen Frage: Link und ich sehe keine Lösung für das Problem ...

+0

Also, was ist die Frage? –

+0

Haben Sie die Firewall, Antivirenprogramme oder andere Apps überprüft, die eine Verbindung verhindern? Haben Sie den serverseitigen Code in Ihrer Befehlszeile ausgeführt? Welche anderen Schritte hast du unternommen, um das zu untersuchen? –

Antwort

10

Angenommen, Sie verwenden eine socket.io-Version größer als 1.0, auf dem Server, ändern Sie dies:

// Add a connect listener 
io.sockets.on('connection', function(socket) { 

    console.log('Client connected.'); 

    // Disconnect listener 
    socket.on('disconnect', function() { 
     console.log('Client disconnected.'); 
    }); 
}); 

dazu:

// Add a connect listener 
io.on('connection', function(socket) { 

    console.log('Client connected.'); 

    // Disconnect listener 
    socket.on('disconnect', function() { 
     console.log('Client disconnected.'); 
    }); 
}); 

finden Sie in der Dokumentation socket.io reference here.


Sie möchten für dieses Ereignis nicht nur auf bereits verbundenen Sockets hören. Sie möchten dieses Ereignis an jedem Socket abhören, sogar an einem neu erstellten.


Seien Sie auch sehr vorsichtig beim Lesen von socket.io Code an zufälligen Stellen im Internet. Einige Dinge haben sich signifikant von v0.9 zu v1.0 geändert (ich weiß nicht, ob dies eines dieser Dinge war oder nicht). Grundsätzlich sollten Sie immer zuerst mit der Dokumentationssite socket.io beginnen, da diese immer die neueste Version darstellt. Wenn Sie sich andere Internetverweise ansehen, stellen Sie sicher, dass Sie nur Artikel verwenden, die später als Mitte 2014 sind. Wenn Sie den Jahrgang eines Artikels nicht kennen, ist es am besten, sich nicht ohne Bestätigung eines neueren Artikels darauf zu verlassen.

11

Auch Sie müssen Protokoll mit Pfad hinzufügen.

Änderung

var socket = io.connect('localhost:8080', {reconnect: true}); 

zu

var socket = io.connect('http://localhost:8080', {reconnect: true}); 
+2

entscheidend .. Das geht nicht ohne diesen Schritt! – CiscoKidx

+0

Ich habe alle diese Änderungen an meinem Code versucht, aber die Konsole protokolliert nicht, dass eine Verbindung zu meinem Raspberry Pi hergestellt wird, wenn ich das Skript im Terminal ausführe. Der Raspberry Pi ist der Kunde. –

-3

können Sie localhost verwenden. Es funktioniert auch für mich. Sie müssen Ihre IP-Adresse und Port verwenden, die für Sie funktioniert

+0

Ich glaube nicht, nur das Ändern des Problems löst das Problem –

+0

, als ich von Localhost zu IPv4 Addres änderte es funktionierte für mich –