2010-09-27 10 views
10

Stavo leggendo le specifiche e molti esempi sull'utilizzo di websocket. Quasi tutti parlano di trasferimento di messaggi UTF-8 o ascii tramite websocket.websocket per il trasferimento binario di dati e decodifica

Le ultime specifiche di websocket Hybi richiedevano il supporto per il trasferimento binario. REQ 6 in hybi spec

Inoltre ho letto da qualche parte che chrome supporta hybi. Ma l'ultima versione di Chrome 7.0 funziona solo quando draft-hixie è selezionato in pywebsocket config.

Qualche browser supporta le specifiche hybi? Anche se è dev, è ok.

+2

Immagino che lo saprai ormai, ma come aggiornamento generale per tutti - Chrome Canary ora supporta questo. Aggiornamento – pimvdb

risposta

7

Potrebbe passare un po 'di tempo prima che la codifica non UTF-8 (cioè binaria) sia supportata in WebSockets.

Suggerisco di utilizzare codifica/decodifica base64 sul client e sul server. Tutti i browser con supporto WebSockets hanno window.atob (base64 decode) e window.btoa (base64 encode). La maggior parte delle lingue che si potrebbero scrivere su un server WebSockets dispongono di librerie base64 (ad esempio, il modulo base64 in python).

Se si desidera trasferire dati binari, potrebbe essere interessante in wsproxy incluso con noVNC che è un client VNC basato sul Web. wsproxy (c'è una versione C e python) è un WebSockets al proxy TCP generico socket. Base64 codifica/decodifica tutto il traffico verso/dal browser. È possibile utilizzarlo per connettersi da un browser abilitato WebSockets a qualsiasi tipo di porta TCP.

Nota, noVNC ha un'implementazione Javascript di codifica/decodifica base64 perché, credendo o meno, la versione Javascript è leggermente più veloce di atob/btoa.

Disclaimer: Ho creato noVNC.

+1

: la bozza IETF-07 del protocollo WebSockets è in ultima chiamata e ha il supporto per i frame binari. Ecco un bug con la discussione delle modifiche API per aggiungere il supporto binario: http://www.w3.org/Bugs/Public/show_bug.cgi?id=12102 – kanaka

Problemi correlati