2011-10-05 2 views
1

J'ai un serveur qui crée une socket sur le port 8181. Je voudrais accéder à cette socket à partir d'une page Web ouverte dans Google Chrome 14. Je suppose que ce n'est pas possible de manière directe. Chrome prend en charge les sockets Web, mais pas les sockets standard. Est-ce correct?Expose socket via des sockets Web

Est-il possible de créer en quelque sorte un intermédiaire qui exposerait mon serveur socket à l'écoute sur le port 8181 en tant que serveur socket Web fonctionnant sur un autre port?

+0

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

+0

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. –

+0

@mgamer, votre question a-t-elle reçu une réponse suffisante? – kanaka

Répondre

6

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.

+0

Mais basé sur la documentation sur le lien du site, il ne fonctionnera pas avec Chrome 14. –

+0

@ RogerF.Gay, vous ne savez pas à quelle information de site Web vous faites référence mais websockify fonctionne très bien avec Chrome 14. WebSockify fonctionne avec les deux versions de Hixie et toutes les versions HyBi du protocole (c'est-à-dire qu'il fonctionne avec tous les navigateurs avec n'importe quel type de support WebSockets). – kanaka

+1

BTW, j'ai mis à jour le webdockify README pour être plus clair sur le protocole et le support de données binaires. – kanaka

Questions connexes