2011-07-09 44 views
7

Mam serwer node.js uruchomiony z Expressem i próbuję ustanowić połączenie z internetem za pomocą strony serwerowej socket.io i strony po stronie klienta chrome 12 . Kiedy próbuję się połączyć, socket.io wypisuje komunikat debugowania z napisem "niszczenie aktualizacji non -socket.io", a kod w mojej procedurze obsługi połączenia nie działa. Również po stronie klienta readyState mojego gniazda to 2 (ZAMKNIĘCIE).problem z websocket: nie można połączyć się z serwerem node.js

[edytuj] readyState gniazda zmieniło od 0 do 2

+0

Czy używasz pliku socket.io.js na kliencie do łączenia się z serwerem? – pkyeck

+0

Czy możesz umieścić tutaj swój fragment kodu (lub link do github)? –

+0

Jakiej wersji Node.js i socket.io używasz? – apose

Odpowiedz

1

Upewnij się, że plik socket.io.js wstawienie do kodu klienta i go używać. Jeśli spróbujesz stworzyć własny websocket po stronie klienta, prawdopodobnie napotkasz problemy.

zrobić coś takiego dla swojego serwera:

var app = require('express').createServer() 
    , io = require('socket.io').listen(app); 

app.listen(80); 

app.get('/', function (req, res) { 
    res.sendfile(__dirname + '/index.html'); 
}); 

io.sockets.on('connection', function (socket) { 
    socket.emit('news', { hello: 'world' }); 
    socket.on('my other event', function (data) { 
    console.log(data); 
    }); 
}); 

i coś takiego do pliku HTML jesteś serwowania:

<script src="/socket.io/socket.io.js"></script> 
<script> 
    var socket = io.connect('http://localhost'); 
    socket.on('news', function (data) { 
    console.log(data); 
    socket.emit('my other event', { my: 'data' }); 
    }); 
</script> 

upewnij się, że służąc /socket.io/socket.io.js ze swoim serwerze dir . Następnie wystarczy przejrzeć dziennik konsoli w środowisku programisty przeglądarki internetowej w Opcjach lub pod Firebug po przejściu do strony.

+0

Kiedy próbuję dodać plik socket.io.js do mojego klienta, pojawia się błąd, że klient nie może znaleźć "wymagać". Spojrzałem na kod socket.io.js i używa on wymagania, które uważałem za rzecz po stronie serwera (tj. Węzła), a nie JavaScript w obsługiwanej przeglądarce. Czy istnieje inna biblioteka, którą musimy uwzględnić w kliencie, który implementuje "wymaganie" po stronie klienta? czy coś mi brakuje? – Elisabeth

+0

@Elisabeth, powinieneś zrobić to w nowym pytaniu. Nie będziesz używać require() w kliencie. W kliencie użyjesz

Powiązane problemy