Commit 2574936f authored by Joel Martin's avatar Joel Martin

utils/README.md, docs/TODO, docs/notes: updates.

Add wswrapper info to utils/README.md and docs/TODO. Remove innacurate
info from docs/notes.
parent 71ba9a7a
Short Term: Short Term:
- Playback/demo on website. - Keyboard layout/internationalization support
- convert keyCode into proper charCode
- VNC performance and regression playback suite.
- Test on IE 9 preview 3. - Test on IE 9 preview 3.
- Fix cursor URI detection in Arora:
- allows data URI, but doesn't actually work
Medium Term:
- Viewport support
- Status bar menu/buttons: - Status bar menu/buttons:
- Explanatory hover text over buttons - Explanatory hover text over buttons
...@@ -29,7 +20,20 @@ Medium Term: ...@@ -29,7 +20,20 @@ Medium Term:
- Clipboard button -> popup: - Clipboard button -> popup:
- text, clear and send buttons - text, clear and send buttons
- wswrapper:
- Flash policy request support.
- SSL/TLS support.
- Tests suite:
- test pselect/poll/ppoll
Medium Term:
- VNC performance and regression playback suite.
- Viewport support
- Touchscreen testing/support.
Longer Term: - wswrapper:
- epoll_* support
- Get web-socket-js RFC2817 proxying working again.
...@@ -4,39 +4,12 @@ There is an included flash object (web-socket-js) that is used to ...@@ -4,39 +4,12 @@ There is an included flash object (web-socket-js) that is used to
emulate websocket support on browsers without websocket support emulate websocket support on browsers without websocket support
(currently only Chrome has WebSocket support). (currently only Chrome has WebSocket support).
The performance on Chrome is great. It only takes about 150ms on my
system to render a complete 800x600 hextile frame. Most updates are
partial or use copyrect which is much faster.
When using the flash websocket emulator, packets event aren't always
delivered in order. This may be a bug in the way I'm using the
FABridge interface. Or a bug in FABridge itself, or just a browser
event delivery issue. Anyways, to get around this problem, when the
flash emulator is being used, the client issues the WebSocket GET
request with the "seq_num" variable. This switches on in-band sequence
numbering of the packets in the proxy, and the client has a queue of
out-of-order packets (20 deep currently) that it uses to re-order.
Gross!
The performance on firefox 3.5 is usable. It takes 2.3 seconds to
render a 800x600 hextile frame on my system (the initial connect).
Once the initial first update is done though, it's quite usable (as
above, most updates are partial or copyrect). I haven't tested firefox
3.7 yet, it might be a lot faster.
Opera sucks big time. The flash websocket emulator fails to deliver as
many as 40% of packet events when used on Opera. It may or not be
Opera's fault, but something goes badly wrong at the FABridge
boundary.
Javascript doesn't have a bytearray type, so what you get out of Javascript doesn't have a bytearray type, so what you get out of
a WebSocket object is just Javascript strings. I believe that a WebSocket object is just Javascript strings. Javascript has UTF-16
Javascript has UTF-16 unicode strings and anything sent through the unicode strings and anything sent through the WebSocket gets converted
WebSocket gets converted to UTF-8 and vice-versa. So, one additional to UTF-8 and vice-versa. So, one additional (and necessary) function
(and necessary) function of the proxy is base64 encoding/decoding what of wsproxy is base64 encoding/decoding what is sent to/from the
is sent to/from the browser. Another option that I want to explore is browser.
UTF-8 encoding in the proxy.
Building web-socket-js emulator: Building web-socket-js emulator:
......
...@@ -53,32 +53,36 @@ These are not necessary for the basic operation. ...@@ -53,32 +53,36 @@ These are not necessary for the basic operation.
#### Implementations of wsproxy #### Implementations of wsproxy
There are three implementations of wsproxy included: python, C, and There are three implementations of wsproxy: python, C, and Node
Node (node.js). (node.js). wswrapper is only implemented in C.
Here is the feature support matrix for the wsproxy implementations: Here is the feature support matrix for the the wsproxy implementations
and wswrapper:
<table> <table>
<tr> <tr>
<th>Implementation</th> <th>Application</th>
<th>Basic Proxying</th> <th>Language</th>
<th>Proxy or Interposer</th>
<th>Multi-process</th> <th>Multi-process</th>
<th>Daemonizing</th> <th>Daemonizing</th>
<th>SSL/wss</th> <th>SSL/wss</th>
<th>Flash Policy Server</th> <th>Flash Policy Server</th>
<th>Session Recording</th> <th>Session Recording</th>
</tr> <tr> </tr> <tr>
<td>wsproxy</td>
<td>python</td> <td>python</td>
<td>yes</td> <td>proxy</td>
<td>yes</td> <td>yes</td>
<td>yes</td> <td>yes</td>
<td>yes 1</td> <td>yes 1</td>
<td>yes</td> <td>yes</td>
<td>yes</td> <td>yes</td>
</tr> <tr> </tr> <tr>
<td>wsproxy</td>
<td>C</td> <td>C</td>
<td>yes</td> <td>proxy</td>
<td>yes</td> <td>yes</td>
<td>yes</td> <td>yes</td>
<td>yes</td> <td>yes</td>
...@@ -86,14 +90,25 @@ Here is the feature support matrix for the wsproxy implementations: ...@@ -86,14 +90,25 @@ Here is the feature support matrix for the wsproxy implementations:
<td>no</td> <td>no</td>
</tr> </tr>
</tr> <tr> </tr> <tr>
<td>wsproxy</td>
<td>Node (node.js)</td> <td>Node (node.js)</td>
<td>proxy</td>
<td>yes</td> <td>yes</td>
<td>yes</td>
<td>no</td> <td>no</td>
<td>no</td> <td>no</td>
<td>no</td> <td>no</td>
<td>no</td> <td>no</td>
</tr> </tr>
</tr> <tr>
<td>wswrapper</td>
<td>C</td>
<td>interposer</td>
<td>indirectly</td>
<td>indirectly</td>
<td>no</td>
<td>no</td>
<td>no</td>
</tr>
</table> </table>
* Note 1: to use SSL/wss with python 2.5 or older, see the following * Note 1: to use SSL/wss with python 2.5 or older, see the following
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment