2010-10-13 18 views
11

Localhost: 8000'de bir sitem var. Şimdi, localhost'taki websocket bağlantılarını dinleyen bir sunucu var: 8001. BenWebsockets Sorun, Belki de aynı Origin Politikası?

var conn = new WebSocket('ws://localhost:8001'); 

gibi WebSocket API üzerinden bu sunucuya bağlanmak için web sitemi istiyorum Ama benziyor

conn.send('something'); 

çağrı üzerine Krom 6.0.472.62 bazı hatalar alıyorum: Yakalanmayan Hata: INVALID_STATE_ERR: DOM durum 11. ateş 4 (4.0b8pre) 'de

, hata iletisi: 11

: bir girişim olarak, kullanılabilir "kod" artık değildir, veya bir nesneyi kullanma yapıldığı

Bu, sunucudaki websocket draft76'yı desteklemeyen el sıkışma ile ilgili bir sorun olduğunu düşündüm, ancak draft75 ve draft76'yı desteklediğini iddia eden http://github.com/miksago/node-websocket-server/tree/master/lib/ws/ kullanıyorum.

Ayrıca, ilk el sıkışma iyi çalışıyor gibi görünüyor. Yeni WebSocket'ı oluşturduktan sonra sunucudan bir yanıt alabilirim, ancak sorun, istemci tarafından "gönder" çağrısında ortaya çıkıyor.

httpserver'ın 8000 numaralı bağlantı noktasında ve websocket sunucusunun 8001 üzerinde olması nedeniyle aynı kaynak politikasıyla ilgili bir sorun mu var? Eğer öyleyse, bu konuda nasıl çalışabilirim?

cevap

27

Belki de onopen etkinliğinin ateşlenmesini beklemeniz gerekir.

var conn = new WebSocket('ws://localhost:8001'); 
conn.onopen = function (e) { 
    conn.send('something'); 
} 
conn.onmessage = function (e) { 
    console.log('got something: ' + e.data); 
} 

Ayrıca, onclose ve onerror olaylarını da kopyalamak iyi bir fikirdir.

İlgili konular