websockify est un proxy générique WebSockets vers TCP socket/bridge. J'ai créé websockify à l'origine pour permettre à noVNC (client VNC HTML5) de pouvoir se connecter à un serveur VNC non corrigé. Mais il est génériquement utile (pas spécifique à VNC) donc je l'ai filé comme un projet séparé.
Sur un système UNIX/Linux vous courriez websockify comme ceci:
./websockify 8080 my_server:8181
Port 8080 dans l'exemple ci-dessus est le port pour écouter les connexions WebSocket. my_server est le nom/IP de votre système où vous avez un serveur qui écoute sur le port 8181. Si vous exécutez websockify sur le même système que votre serveur, vous pouvez simplement utiliser localhost
à la place de 'my_server'.
Le projet websockify est également livré avec une librairie Javascript appelée websock.js. websockify prend en charge les nouvelles versions de protocole (utilisées par Chrome 14+ et Firefox 6+) mais fonctionne également avec les anciennes versions. Cependant, avec les anciennes versions du protocole, il n'y a aucun moyen d'envoyer des données binaires brutes (seulement UTF-8), donc websock.js et websockify travaillent ensemble pour encoder/décoder les données de base64 (entre le navigateur et websockify) en utilisant le ancien protocole afin que vous puissiez toujours envoyer des données binaires brutes vers/depuis la cible.
Dans Node.js, vous pouvez créer à la fois un serveur et un client. Vous pouvez créer une application qui inclut à la fois un serveur WebSockets sur le port, disons 8182, et un client qui se connecte au port 8181. Vous acheminez simplement toutes les données entrantes (après le décodage du format WebSockets) vers 8181 et toutes les données reçues de 8181 convertir en format WebSockets et passer au client (Chrome). – pimvdb
Je voudrais plus de détails. Est-ce que vous construisez votre propre serveur? Utiliser un serveur comme Tomcat ou Apache? Le serveur d'application GlassFish comprend grizzly, qui est un serveur websocket. Je suis juste en train d'enquêter maintenant. Les mauvaises nouvelles (ne devraient pas durer éternellement), c'est que je n'ai pas encore trouvé d'exemples de travail. –
@mgamer, votre question a-t-elle reçu une réponse suffisante? – kanaka