2010-10-13 4 views
11

J'ai un site hébergé chez localhost: 8000. Maintenant, j'ai un serveur à l'écoute des connexions websocket à localhost: 8001. Je voudrais que mon site Web pour se connecter à ce serveur via le websocket api commeWebsockets problème, peut-être la même politique d'origine?

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

mais je reçois des erreurs dans Chrome 6.0.472.62 sur l'appel

conn.send('something'); 

qui ressemble à: Uncaught Erreur: INVALID_STATE_ERR: DOM Exception 11.

Dans Firefox 4 (4.0b8pre), je reçois l'erreur: tentative d'utiliser un objet qui est pas ou est plus, utilisable "code:" 11

Je pensais que c'était un problème avec le handshake ne supportant pas websocket draft76 sur le serveur, mais j'utilise http://github.com/miksago/node-websocket-server/tree/master/lib/ws/ qui prétend supporter draft75 et draft76.

En outre, la poignée de main initiale semble fonctionner correctement. Je peux recevoir une réponse du serveur lors de la création du nouveau WebSocket, cependant, les problèmes surviennent lors de l'appel à "envoyer" du côté client.

Est-ce un problème avec la même politique d'origine puisque mon httpserver se trouve sur le port 8000 et le serveur websocket sur le 8001? Si oui, comment puis-je contourner cela?

Répondre

27

Vous devez peut-être attendre que l'événement onopen se déclenche?

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

De plus, il est également judicieux de connecter les événements onclose et onerror.

Questions connexes