Commit Graph

890 Commits

Author SHA1 Message Date
Joel Martin 2152a88f5c Add summary timing info on disconnect.
Also, move Frame Buffer Update code out of normal_msg into separate
function.
2010-06-14 14:43:21 -05:00
Joel Martin 30e5396326 Less debug output. 2010-06-14 14:42:34 -05:00
Joel Martin a4807656a2 Move cert gen to Usage section of README.md. 2010-06-14 14:34:05 -05:00
Joel Martin 6a52558dd8 Render PNG images in order. Update TODO. 2010-06-13 11:00:12 -05:00
Joel Martin 3954ae149a Fix mouse focus issues. 2010-06-13 10:57:23 -05:00
Joel Martin 888d5813ed Fix scrolled mouse position. 2010-06-10 16:05:15 -05:00
Joel Martin 4b4496ad67 DesktopResize and compression level pseudo-encodings.
- Implement resizing of desktop pseudo-encoding.

- Also send lowest (fastest) compression level pseudo-encoding.
  Ought be user tweakable.
2010-06-10 15:44:42 -05:00
Joel Martin 8a8370060e More dynamic encoding list handling. 2010-06-10 12:11:13 -05:00
Joel Martin c3d28aabe4 base64 encode instead of escaping images. 2010-06-09 17:50:06 -05:00
Joel Martin 0664669ce9 Almost double firefox tight_png render performance.
When extracting the data URI info, much more efficient in firefox to
iterate and push onto an array, then to generate the whole array at
once using the map function.

Chrome is mostly unaffected by this change (might be slightly better).
2010-06-09 15:40:46 -05:00
Joel Martin 29cb15f9ca TIGHT_PNG encoding and timing refactor.
Also, generate encodings array to send from a list of encodings
instead of being hardcoded generator function.
2010-06-09 15:00:32 -05:00
Joel Martin af183e63f5 update failed state on WS onerror.
Also, slightly faster non-base64 (UTF-8) decode.
2010-06-08 11:20:03 -05:00
Joel Martin 97df09b9f1 Output count for multi-packet decodes. 2010-06-07 14:36:26 -05:00
Joel Martin 9a09b636e7 Add UTF-8 wire encoding support to C wsproxy. 2010-06-07 13:47:44 -05:00
Joel Martin 7210e79e04 Move wsproxy and web utils into utils/ subdir. 2010-06-07 12:49:57 -05:00
Joel Martin 9e61a9c6f0 C wsproxy: seq numbers and decode multiple frames. 2010-06-07 12:44:02 -05:00
Joel Martin 8e1aa95ba3 First pass at working C wsproxy.
No sequence numbering and only support b64encoding at the moment.
2010-06-04 17:10:06 -05:00
Joel Martin 14355cb212 Give better exception feedback in message handler. 2010-06-04 13:51:21 -05:00
Joel Martin 30298582d0 Add 'tight' encoding to TODO list. Add rfb proto link. 2010-06-03 16:11:21 -05:00
Joel Martin 2e041cf225 Fix Alt keysym.
From kevinychan/vnc-html5 ebfffdc36.
2010-06-03 09:28:44 -05:00
Joel Martin 4f0da9ef84 Clarify examples. 2010-06-03 08:39:42 -05:00
Joel Martin 1aa9506251 Explain VNC_uri_prefix in README.md. 2010-06-02 17:28:28 -05:00
Joel Martin d0e01e064c Update README.md to reflect separate default controls file. 2010-06-02 17:18:46 -05:00
Joel Martin 913083993b Direct example. Move all DOM code default_controls.js.
Move DOM manipulation into include/default_controls.js and update
vnc.html to use it.

Add an example vnc_auto.html which automatically connects using
parameters from the query string and doesn't use default_controls.js.

Reorder functions in vnc.js to put external interface functions at the
top of the RFB namespace.
2010-06-02 17:08:25 -05:00
Joel Martin 325d9eb7f3 Add --record option to wsproxy.py. 2010-06-01 18:07:34 -05:00
Joel Martin d41c33e4b7 Add colour map support (non-true-color).
In colourMap mode there are 256 colours in a colour palette sent from
the server via the SetColourMapEntries message. This reduces the
bandwidth by about 1/4. However, appearance can be somewhat less than
ideal (pinks instead of gray, etc).

It also increases client side rendering performance especially on
firefox. Rendering a full 800x600 update takes about 950ms in
firefox on my system compared to about 1400ms. Round-trip time for
a full frame buffer update is even better on firefox (due to
performance of the flash WebSocket emulator). Reduced from about
1800ms to 1100ms on firefox (for 800x600 full update).
2010-06-01 14:34:27 -05:00
Joel Martin 507b473a2e Test non-base64 (straight UTF-8) encoding.
Also add a wsencoding test client/server program to test send a set of
values between client and server and vice-versa to test encodings.

Not turned on by default.

Add support for encode/decode of UTF-8 in the proxy. This leverages
the browser for decoding the WebSocket stream directly instead of
doing base64 decode in the browser itself.

Unfortunately, in Chrome this has negligible impact (round-trip time
is increased slightly likely due to extra python processing).

In firefox, due to the use of the flash WebSocket emulator the
performance is even worse. This is because it's really annoying to get
the flash WebSocket emulator to properly decode a UTF-8 bytestream.
The problem is that the readUTFBytes and readMultiByte methods of an
ActionScript ByteArray don't treat 0x00 correctly. They return
a string that ends at the first 0x00, but the index into the ByteArray
has been advanced by however much you requested.

This is very silly for two reasons: ActionScript (and Javascript)
strings can contain 0x00 (they are not null terminated) and second,
UTF-8 can legitimately contain 0x00 values. Since UTF-8 is not
constant width there isn't a great way to determine if those methods
in fact did encounter a 0x00 or they just read the number of bytes
requested.

Doing manual decoding using readUTFByte one character at a time slows
things down quite a bit. And to top it all off, those methods don't
support the alternate UTF-8 encoding for 0x00 ("\xc0\x80"). They also
just treat that encoding as the end of string too.

So to get around this, for now I'm encoding zero as 256 ("\xc4\x80")
and then doing mod 256 in Javascript. Still doesn't result in much
benefit in firefox.

But, it's an interesting approach that could use some more exploration
so I'm leaving in the code in both places.
2010-05-28 15:39:38 -05:00
Joel Martin c3996e24f5 Round-trip timing for first full FBU. 2010-05-28 15:35:10 -05:00
Joel Martin d38406e6b5 Fix web-socket-js: encode sent data across FABridge. 2010-05-28 15:34:54 -05:00
Joel Martin af6b17ce06 Change license to LGPL-3 and add some implementation notes.
The purpose of the code is to be incorporated into other web projects
(whether those are free or not). AGPL prevents combination with other
HTML and javascript that is under a weaker (or proprietary) license.
Better would be a lesser AGPL, but there is not GNU standard for that.
So LGPL-3 meets most of my requirements. If somebody modifies the
actual client code and conveys it, then they must release the changes
under LGPL-3 also.

Add some implementation notes in docs/notes.
2010-05-26 15:43:00 -05:00
Joel Martin 32eb5d7cb0 Use relative include path in tests. 2010-05-25 11:09:34 -05:00
Joel Martin a575a383fb Add mouse wheel support and input test page. 2010-05-25 11:05:55 -05:00
Joel Martin 7f4f41b0c7 Don't shift off subencoding in hextile. 2010-05-20 17:13:59 -05:00
Joel Martin 8fe2c2f915 Fix web-socket-js loading issue. 2010-05-17 17:11:13 -05:00
Joel Martin 97763d0eb8 Double Chrome hextile perf again. Add canvas test.
- By dereferencing the 'data' field of the imageData object before the
  loop, the hextile performance on Chrome is down to 140ms or so for
  a full 800x600 update. Still have to fall back to Canvas operations
  for firefox.

- Fix RQ empty after reorder bug.
2010-05-17 13:07:53 -05:00
Joel Martin 3c1bead9a0 Add styling classes for status line state. 2010-05-16 19:58:51 -05:00
Joel Martin b92e282ad7 Add back canvas.html test page to tests subdir. 2010-05-16 19:23:44 -05:00
Joel Martin af180155a8 Create FABridge tester. Move wstest into tests subdir. 2010-05-16 19:21:21 -05:00
Joel Martin 8acfc8cf52 Change wstest.html 'cnt' to 'seq'. 2010-05-16 17:51:00 -05:00
Joel Martin f9583f1f98 Move canvas.js to include/canvas.js. 2010-05-15 15:45:09 -05:00
Joel Martin 67b24a9020 Support 3.7. 2010-05-15 15:25:10 -05:00
Joel Martin 56ec48bec8 Move vars into RFB namespace. Extend array in util.js. 2010-05-15 14:55:33 -05:00
Joel Martin c4164bda1d JSLint and "use strict". 2010-05-15 14:28:55 -05:00
Joel Martin 753bde8f53 Cleanup output, trap exceptions, timing output, fixes.
Fixes:
- Make sure that failed state messages stay around until next connect.
- Get status message font colors working.
- Clear RQ_reorder list on re-connect.
2010-05-15 12:38:50 -05:00
Joel Martin 3875f847f1 Double hextile rendering performance in Chrome.
- For webkit engines, do array manipulation for each tile subrectangle
  and only use the array for putImageData after rendering is finished.

In Chrome 5.0.375.29 beta, the time to render a full 800x600 hextile
image dropped from 500ms to 250ms or so. Firefox 3.5.3 rendering of
a full 800x600 hextile image is about 2300ms.
2010-05-15 12:27:44 -05:00
Joel Martin 0a72cf9026 Reset client_settings on connect.
- Otherwise client_setting carry over from other connections.
2010-05-15 12:14:30 -05:00
Joel Martin 71d2426a8e Rename HTML5-VNC to noVNC. 2010-05-12 09:39:38 -05:00
Joel Martin dcd950a044 Mark include/plain.css as code. 2010-05-11 15:04:07 -07:00
Joel Martin 1c91712f84 Add some links to related project sites. 2010-05-11 17:00:42 -05:00
Joel Martin 3a5ddcf737 Pull and modify stylesheet from kevinykchan/vnc-html5.
Pull and modify vnc.css version
b747e284c0e417df1599b1d95724518b07be8df6 to include/black.css
2010-05-11 16:58:36 -05:00