2010-10-13 9 views
11

Ho un sito ospitato su localhost: 8000. Ora, ho un server che ascolta le connessioni websocket su localhost: 8001. Vorrei che il mio sito web per la connessione al server tramite l'API websocket comeProblema Websockets, forse la stessa politica di origine?

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

ma ottengo alcuni errori in cromo 6.0.472.62 su chiamando

conn.send('something'); 

Che assomiglia: errore non rilevato: INVALID_STATE_ERR: DOM eccezione 11.

In Firefox 4 (4.0b8pre), ottengo l'errore: stato effettuato un tentativo di utilizzare un oggetto che non è, o non è più, "codice" usabile 11

Ho pensato che si trattasse di un problema con l'handshake che non supportava la bozza websocket76 sul server, ma sto usando http://github.com/miksago/node-websocket-server/tree/master/lib/ws/ che afferma di supportare la bozza 75 e la bozza76.

Inoltre, la stretta di mano iniziale sembra funzionare correttamente. Posso ricevere una risposta dal server durante la creazione del nuovo WebSocket, tuttavia, i problemi sorgono nella chiamata a "inviare" dal lato client.

Si tratta di un problema con lo stesso criterio di origine poiché il mio httpserver si trova sulla porta 8000 e il server websocket è su 8001? Se è così, come posso aggirare questo?

risposta

27

Forse è necessario attendere l'attivazione dell'evento onopen?

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

Inoltre, è una buona idea agganciare anche gli eventi onclose e onerror.

Problemi correlati