2015-03-17 15 views
11

próbuję połączyć się z socket.io-client za pomocą następującego kodu:węzeł js - Socket.io-klient nie łączy się socket.io serwer

Serwer:

// 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'); 

Nie otrzymuję dziennika Connected Console ani dziennika Connected Console klienta i nie wiem dlaczego! Próbka kodu pochodzi z innego pytania: Link i nie widzę żadnego rozwiązania problemu ...

+0

O co więc chodzi? –

+0

Czy sprawdziłeś zaporę ogniową, program antywirusowy, czy inne aplikacje uniemożliwiające połączenie? Czy uruchomiłeś kod po stronie serwera w linii poleceń? Jakie inne kroki podjąłeś w celu zbadania? –

Odpowiedz

10

Zakładając, że używasz wersji socket.io większej niż 1.0, zmień na serwerze:

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

    console.log('Client connected.'); 

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

do tego:

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

    console.log('Client connected.'); 

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

Zobacz dokumentację socket.io reference here.


Nie chcesz słuchać tego wydarzenia tylko na już podłączonych gniazdach. Chcesz słuchać tego zdarzenia na dowolnym gnieździe, nawet nowo utworzonym.


Należy również zachować ostrożność podczas czytania kodu socket.io w przypadkowych miejscach w Internecie. Niektóre rzeczy zmieniły się znacznie od wersji 0.9 do 1.0 (nie wiem, czy to była jedna z tych rzeczy, czy nie). Powinieneś zawsze zaczynać od strony dokumentacji socket.io, ponieważ zawsze będzie to najnowsza wersja. Następnie, patrząc na inne odniesienia internetowe, upewnij się, że korzystasz tylko z artykułów, które są później niż w połowie 2014 roku. Jeśli nie znasz rocznika artykułu, najlepiej nie polegać na nim bez potwierdzenia z bardziej aktualnego artykułu.

11

Należy również dodać protokół ze ścieżką.

zmiana

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

do

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

kluczowy .. To nie działa bez tego kroku! – CiscoKidx

+0

Próbowałem wszystkich tych zmian na moim kodzie, ale konsola nie loguje się, że połączenie jest ustanowione na moim raspberry pi, gdy uruchamiam skrypt w terminalu. Raspberry pi jest klientem. –

-3

można użyć localhost. Działa również dla mnie. Musisz użyć adresu ip i portu, który działa dla ciebie.

+0

Nie sądzę, że zmiana go rozwiązuje problem –

+0

kiedy zmieniłem z localhost na adres IPv4, który zadziałał dla mnie –