2010-08-02 31 views
10

Verileri tarayıcımdan (Chrome) bir nodejs sunucusuna aktarmaya çalışıyorum ve korkunç bir sorun yaşıyorum.Nodejs & websockets

<script src="./Socket.IO/socket.io.js"></script> 
<script> 
     io.setPath('./Socket.IO/'); 

     var socket=new io.Socket('xxx.xxx.xxx.xxx'); 

     socket.on('connect',function(){ 
       alert('connect');  
     }); 
     socket.on('message',function(msg){ 
       alert('message'+msg); 
     }); 
     socket.on('close',function(){ 
       alert('close'); 
     }); 
     socket.on('disconnect',function(){ 
       alert('disconnect'); 
     }); 
     socket.connect(); 

</script> 

görünen olan tek uyarı 'yakın' uyarıdır:

Temelde, tarayıcıda görüntülenen bu kodu var.

İşte benim sunucu kodu:

var http=require('http'); 
var io=require('./Socket.IO-node'); 

var server=http.createServer(function(req, res){ 
    // your normal server code 
    res.writeHeader(200, {'Content-Type': 'text/html'}); 
    res.writeBody('<h1>Hello world</h1>'); 
    res.finish(); 
}); 

var socket=io.listen(server,{transports:websocket,port:8080}); 

socket.on('connection',function(client){ 
     console.log('connection'); 
}); 

Sen konsola bağlantıları günlüğe çalışıyorum görebilirsiniz, ama hiçbir şey gösterir. Ben googling oldum ve http://github.com/LearnBoost/Socket.IO-node adresindeki Socket.IO örnekleriyle çalışmaya çalışıyorum ve hiçbir şey benim için çalışıyor gibi görünmüyor ...

Herhangi bir işaretçiyi çok takdir ediyoruz.

Düzenleme: Merhaba,

Ben ettik şimdi aşağıdaki sunucu kodu var:

var http=require('http'); 
var io=require('./Socket.IO-node'); 

var server=http.createServer(function(req, res){ 
     //your normal server code 
     res.writeHead(200, {'Content-Type': 'text/html'}); 
     res.write('Hello world'); 
     res.end(); 
}); 

server.listen(8124); 
server=io.listen(server); 
server.on('connection', function(client){ 
     console.log('EOH connected'); 
     sys.log('EOH connected'); 
}); 
server.on('clientConnect',function(client){ 
     console.log('EOH connected'); 
     sys.log('EOH connected'); 
}); 
server.on('clientDisconnect',function(client){ 
     console.log('EOH disconnected'); 
     sys.log('EOH disconnected'); 
}); 

Ve aşağıdaki istemci kodu:

<script> 
window.onload=function(){ 
io.setPath('./Socket.IO/'); 
socket = new io.Socket('localhost', {'port': 8124}); 
socket.connect(); 
socket.send('xxx'); 
} 
</script> 

İstemci kodunu de yüklediğinizde localhost: 8124, bir tür 'clientConnect' olayının işlenmesini beklerdim. Ayrıca soket nesnesine veri gönderiyorum ve sunucuda görünen hiçbir şey yok ... Tamamen güdük. Şimdi node-websocket-server'ı kullanıyorum (http://github.com/miksago/node-websocket-server).

Çözüm: git clone git: --recursive

Kullanım --recursive bayrağını //github.com/LearnBoost/Socket.IO.git. Doh!

cevap

0

bu kod benim için çalışıyor: istemci üzerinde

var server = http.createServer(...);  

server.listen(8124); 
server = io.listen(server); 
server.on('connection', function(client){ 
    sys.log('client connected'); 
}); 

ve sonra:

io.setPath('/media/js/Socket.IO/'); 
socket = new io.Socket('localhost', {'port': 8124}); 
socket.connect(); 

Belki açık liman parametresi durumda yardımcı olacak

?

+0

Hey, teşekkürler. Verdiğiniz kodu denedim ve sunucu tarafı konsolunda hiç ileti alamıyorum; ( – Eamorr

+0

Düğüm örneğinizin bağlantı noktasını açmak için yeterli hakları var mı? Belki de bu örneklerin çalışmadığı bir nedendir. sudo düğümü server.js Ayrıca yapar merhaba dünya çalışma edin http: // localhost: 8124/- temel düğümle - hayır 'merhaba dünya' o zaman sorun uygulamanızın sunucu kısmı ile olan varsa? .js konuşlandırma Eğer öyleyse, ilk önce onu çalıştırmayı deneyin Socket.IO olmadan Ayrıca, tarayıcıdaki hata konsolunu da kontrol edin: eğer başka j'ler başarısız olursa, bağlantı yöntemi çalıştırılamayabilir: –

+2

Bazı dosyaların eksik olması da mümkündür. Şu anda github yüklemelerinde eksik. Git checkout'u yapmaya çalışın: Zip arşivi indirmek yerinegit clone git: //github.com/LearnBoost/Socket.IO.git --recursive . –