2012-04-10 18 views
5

Şimdi bir süredir kodumun/ayarların neyin yanlış olduğunu anlamaya çalışıyorum.Benimden istemciden sunucuya bir ileti göndermek istiyorum . Aşağıdakiler, FF (11) ve krom (18.0.1025.152 m) dışındaki tüm tarayıcılarda 'da çalışır.Socket.io, Chrome ve Firefox'ta Düğüm sunucusuna mesaj gönderemediğinde

  1. Ben
  2. apache kullanmak Windows 7 kurumsal 64 bit makine üzerinde node.js
  3. localhost ben port 8080 tarihinde dinliyorum sayfayı hizmet etmek çalıştırın: İşte

    bazı bilgiler verilmiştir socket.io
  4. ile bu krom ve FF çare xhr-yoklama/jsonp-yoklama için yerine ben sunucudan gelen mesajları itebilir
  5. kullanarak yuvalarına gibi görünüyor, ama ben istemciden yayarlar edemez

Sunucu kodu:

<!DOCTYPE html> 
<html lang="en"> 

<head> 
    <title>Hello World!</title> 
    <meta charset="utf-8"> 

    <script src="http://localhost:8080/socket.io/socket.io.js"></script> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function(){ 
      var socket = io.connect('http://localhost:8080'); 
      $("#button").click(function() { 
       socket.emit('my event' ,"Hello World!"); 
      }) 
     }) 
    </script> 
</head> 

<body> 
<button type="button" id='button'>Send Message</button> 
</body> 

</html> 

Modüller sürümleri:

C:\Users\shlomis>npm ls 
[email protected] C:\Users\shlomis 
├─┬ [email protected] 
│ ├─┬ [email protected] 
│ │ └── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ └── [email protected] 
└─┬ [email protected] 
    ├── [email protected] 
    ├── [email protected] 
    └─┬ [email protected] 
    ├─┬ [email protected] 
    │ └── [email protected] 
    ├── [email protected] 
    ├─┬ [email protected] 
    │ ├── [email protected] 
    │ └── [email protected] 
    └── [email protected] 
Ben tam yolu olmadan

Müşteri koduna ihtiyaç için bir yol bulamadı

var io = require('C:/Users/shlomis/node_modules/socket.io/lib/socket.io').listen(8080); 

io.sockets.on('connection', function (socket) { 
    socket.on('my event', function (msg) { 
     console.log("DATA!!!"); 
    }); 
}); 

Düğüm günlük:

C:\Users\shlomis>node C:\dev\wamp\www\AR\js\videoServer.js 
    info - socket.io started 
    debug - served static content /socket.io.js 
    debug - client authorized 
    info - handshake authorized 17502185141066845391 
    debug - setting request GET /socket.io/1/websocket/17502185141066845391 
    debug - set heartbeat interval for client 17502185141066845391 
    debug - client authorized for 
    debug - websocket writing 1:: 
    debug - setting request GET /socket.io/1/xhr-polling/17502185141066845391?t=1334041653716 
    debug - setting poll timeout 
    debug - discarding transport 
    debug - cleared heartbeat interval for client 17502185141066845391 

krom WS isteği (101 Anahtarlama Protokoller): enter image description here

krom XHR isteği: enter image description here

güncelle: IV'e ilave

socket.on('connect', function() { 
    console.log("connected"); 
}); 

Hiçbir zaman kromdan ateşlemez.

Neyin yanlış olabilir? lütfen yardım edin :)

+0

Tam olarak aynı sorunu yaşıyorum ... client üzerinde socket.emit ('hello'), safaride çalışıyor ancak firefox veya kromda çalışmıyor ... Güvenlik kısıtlaması belki? Ya da muhtemelen bir socket.io böcek. –

+0

Hata, yalnızca XHR kullanıldığında meydana geldiğinden, "aynı kaynak" politikası olabilir mi? Localhost'a basit bir XHR yapmayı deneyin: farklı porttan çok sunulmuş sayfa, herhangi bir güvenlik istisnası olup olmadığını öğrenin. –

+0

NO güvenlik sorunları, şimdi node JS üzerinde soketler için http://faye.jcoglan.com/node.html (faye) kullanın ve iyi çalışıyor ... bana bir socket.io hata gibi görünüyor. –

cevap

0

İstemciniz için yanlış socket.io.js dosyasını kullandığınıza inanıyorum?

https://github.com/LearnBoost/socket.io-client/tree/master/dist

üzerindeyken istemci tarafı şeyler, yani sahip olduğu

Bir klasördeki bu dosyaları kullanmalısınız: gerektiren problem Hakkında ../js/socket.io.min.js

, sen UÖM'yi kullanıyorsunuz? Aşağıdaki nodeJS proje klasörüne gidin ve çalıştırın: Bu proje klasörünün içindeki ve require('socket.io'); Modülü erişmek mümkün olmalıdır yaparak node_modules klasöre yüklemek gerekir

npm install socket.io

.

Bu çalışmıyorsa, bozuk bir düğüm yüklemeniz gerekebilir.

Not: Dosyalar için aynı bağlantı noktasını mı kullanıyorsunuz? 8080 numaralı bağlantı noktasında socket.io dosyasını arıyor ve soket bağlantıları için 8080 numaralı bağlantı noktasında nodeJS'ye bağlanıyor gibi görünüyorsunuz ...

Başka bir bağlantı noktası kullanmayı deneyin?

+0

Hatta ben de aynı problemi yaşıyorum. Firefox ve Chrome üzerinde çalışmıyor, ancak IE'de gayet iyi çalışıyor. – Shekhar