2010-09-27 18 views
10

Je lisais la spécification et de nombreux exemples sur l'utilisation des websockets. Presque tous parlent de transfert de messages UTF-8 ou ascii en utilisant des websockets.websocket pour le transfert binaire de données et de décodage

La dernière spécification Websocket Hybi a demandé la prise en charge du transfert binaire. REQ 6 in hybi spec

Aussi, j'ai lu quelque part que le chrome prend en charge hybi. Mais la dernière version de Chrome 7.0 ne fonctionne que lorsque draft-hixie est sélectionné dans pywebsocket config.

Est-ce qu'un navigateur est compatible avec hybi spec? Même si c'est le dev, c'est ok.

+2

Je suppose que vous le savez maintenant, mais comme une mise à jour générale pour tout le monde - Chrome Canary supporte maintenant cela. – pimvdb

Répondre

7

Il peut s'écouler un certain temps avant que le codage non-UTF-8 (c'est-à-dire binaire) ne soit pris en charge dans WebSockets.

Je suggère d'utiliser l'encodage/décodage base64 sur le client et le serveur. Tous les navigateurs prenant en charge WebSockets ont window.atob (base64 decode) et window.btoa (encodage base64). La plupart des langues dans lesquelles vous pouvez écrire un serveur WebSockets ont des bibliothèques base64 (c'est-à-dire un module base64 en python).

Si vous souhaitez transférer des données binaires, vous pourriez être intéressé par wsproxy inclus avec noVNC qui est un client VNC basé sur le Web. wsproxy (il existe une version C et python) est un proxy WebSockets vers des sockets TCP génériques. Il base64 code/décode tout le trafic vers/depuis le navigateur. Vous pouvez l'utiliser pour vous connecter à partir d'un navigateur compatible WebSockets à n'importe quel type de port TCP. Remarquez, noVNC a une implémentation Javascript de base64 encoder/décoder parce que, croyez-le ou non, la version Javascript est légèrement plus rapide que atob/btoa.

Avis de non-responsabilité: J'ai créé noVNC.

+1

Mise à jour: le brouillon IETF-07 du protocole WebSockets est en dernier appel et prend en charge les trames binaires. Voici un bug avec la discussion des modifications de l'API pour ajouter du support binaire: http://www.w3.org/Bugs/Public/show_bug.cgi?id=12102 – kanaka