Joel Martin [Mon, 19 Apr 2010 15:41:06 +0000 (10:41 -0500)]
wstest*. Fix Opera problems. Flash policy. Misc bugs.
Lame. Opera doesn't support javascript reduce().
Also, Opera seems to just plain be pathetic when it comes to
delivering the web-socket-js events. Around 1/5 to 1/3 of all received
packets are never received as an event at all.
- Change default delay for send side to 10ms.
- Use a textarea for errors so that even without console.* support
(ala firebug) we still see the errors that are happening.
Joel Martin [Mon, 19 Apr 2010 01:35:43 +0000 (20:35 -0500)]
Send seq nums and b64 encode based on query string.
Query string variable 'b64encode' determine if wsproxy b64 encodes the
results. Variable 'seq_num' determines if sequence numbers are
prepended. This way, sequence numbers are only used with the flash
WebSocket proxy.
Joel Martin [Sat, 17 Apr 2010 22:16:08 +0000 (17:16 -0500)]
Add web-socket-js support with packet re-ordering.
- web-socket-js is from http://github.com/gimite/web-socket-js. It is
a flash object that emultates WebSockets.
Unfortunately, events (or packets) from the web-socket-js object can
get re-ordered so we need to know the packet order.
- So wsproxy.py prepends the sequence number of the packet when
sending.
- If the client receives packets out of order it queues them up and
scans the queue for the sequence number it's looking for until
things are back on track. Gross, but hey: It works!
Joel Martin [Thu, 15 Apr 2010 06:40:03 +0000 (01:40 -0500)]
Add cut and paste support.
- A textarea below the VNC area represents the state of the current
VNC clipboard. If there is a server cut event, the textarea will be
updated. If the user updates the contents of the textarea, the new
data will be sent as a client paste (cut) event.
- One important change was to detect if the clipboard is focused and
allow the user to type in the clipboard instead of in the VNC area.
Joel Martin [Wed, 14 Apr 2010 17:03:01 +0000 (12:03 -0500)]
Better hextile performance: index subrects instead of slicing/shifting.
- Many times better performance. Before this, browser was spending all
it's time garbage collecting or doing something. Now the bottleneck
is in set fillStyle and fillRect which is probably where it should
be.
Joel Martin [Wed, 14 Apr 2010 14:48:46 +0000 (09:48 -0500)]
Refactor data processing. Ignore other server messages.
- Refactor to pull off all the data received into RFB.d array and then
process it. This allows a bit more flexibility in handling
data that isn't sent in frame boundary packets.
- Properly ignore these server messages: SetColourMapEntries, Bell,
ServerCutText.
Joel Martin [Tue, 13 Apr 2010 17:59:11 +0000 (12:59 -0500)]
Hextile working. Improve latency by coallescing sends.
- Hextile has an undocumented weirdness where RAW frames are often
followed by a 0 byte that should be ignored.
- Coallesce client messages that are one after another. Without
this the server seems to often ignore frames that are send right
after another frame has been sent. This fixes a reconnect issue
where setEncodings seems to be ignored. Also results in a huge
performance increase after key strokes (by adding a update request
to the key event message) because the server always sends an update
instead of sometimes waiting for the next poll to be sent.
Joel Martin [Tue, 6 Apr 2010 18:49:49 +0000 (13:49 -0500)]
Better interface, support user provided VNC password.
- host, port and password input boxes (populated by URL values).
- clear canvas on disconnect.
- Dotted border around VNC area.
- mirror bits for VNC password.