2011-08-26 5 views
2

Je ne peux pas établir une connexion sécurisée à l'aide websocket websocket-serveur et node.jsComment configurer une connexion sécurisée à l'aide websocket websocket-serveur et node.js

côté serveur

var options = { 
    key: fs.readFileSync(PRIVATE_KEY), 
    cert: fs.readFileSync(CERTIFICATE) 
}; 

// create web server 
var server = ws.createServer(options); 
server.listen(8000); 
... 

client côté

<script language="javascript" type="text/javascript"> 
    var wsUri = "wss://url:8000"; 


    function init() {    
     websocket = new WebSocket(wsUri); 
    } 

    ... 

    window.addEventListener("load", init, false); 
</script> 

Mais cela fonctionne pour ws

var wsUri = "ws://url:8000"; 

Des idées?

+0

Quel navigateur utilisez-vous? Différents navigateurs prennent en charge différentes versions de la spécification WebSocket, seuls Chrome 14 et Firefox 7 prennent en charge le dernier brouillon 8 de la spécification WS. Aussi, comment gérez-vous le «handshake» pour établir une connexion avec le WebSocket? –

+0

J'utilise google chrome (version 15) Pour la négociation, j'utilise un certificat auto-signé. J'ai essayé nodejs intégré simple serveur https, cela fonctionne très bien avec ce certificat, je veux dire https: // url: port. Mais il y a quelque chose qui cloche avec l'implémentation de websockets dans le paquet websocket-server. –

+0

Je voulais dire quel paquet node.js utilisez-vous pour gérer WebSockets? Ou roulez-vous votre propre solution? Avez-vous essayé Worlize/WebSocket-Node https://github.com/Worlize/WebSocket-Node? EDIT: Juste remarqué que vous avez mentionné quelque chose appelé 'websocket-server', est-ce un paquet pour node.js? Pouvez-vous fournir un lien vers celui-ci? –

Répondre

3

De l'readme pour websocket-server:

C'est un serveur pour le protocole WebSocket. Il travaille actuellement avec draft75 et draft76 de la spécification de protocole.

Chrome v15 n'utilise plus draft75/draft76. Il utilise la dernière version 8 de la spécification WebSocket et n'est pas compatible avec les anciens brouillons (le mécanisme de prise de contact et la façon dont les données sont envoyées ont changé). Ce pourrait être votre problème. Essayez un package node.js qui prend en charge la spécification WebSocket plus récente, je recommanderais Worlize/WebSocket-Node ou vous pouvez essayer socket.io.

Questions connexes