|
@@ -5,28 +5,38 @@ VNC HTML5 Client
|
|
|
Description
|
|
|
-----------
|
|
|
|
|
|
-An VNC client implemented using HTML5, specifically Canvas and Web Sockets.
|
|
|
+An VNC client implemented using HTML5, specifically Canvas and
|
|
|
+WebSocket.
|
|
|
|
|
|
+For browsers that do not have builtin WebSocket support, the project
|
|
|
+includes web-socket-js, a WebSocket emulator using Adobe Flash
|
|
|
+(http://github.com/gimite/web-socket-js).
|
|
|
|
|
|
|
|
|
Requirements
|
|
|
------------
|
|
|
|
|
|
-* A browser that supports Web Sockets (mostly Chrome as of Apr 6, 2010)
|
|
|
- and Canvas (most browsers)
|
|
|
+Until there is VNC server support for WebSocket connections, you need
|
|
|
+to use a WebSocket to TCP socket proxy. There is a python proxy
|
|
|
+included ('wsproxy').
|
|
|
|
|
|
-* Until VNC server support web sockets, you need to use a Web Sockets to
|
|
|
- normal socket proxy. There are a couple reasons for this:
|
|
|
+There a few reasons why a proxy is required:
|
|
|
|
|
|
- 1. Web Sockets is not a pure socket protocol. There is an initial HTTP
|
|
|
- like handshake to allow easy hand-off by web servers and allow some
|
|
|
- origin policy exchange. Also, each Web Sockets frame begins with
|
|
|
- 0 ('\x00') and ends with 255 ('\xff').
|
|
|
+ 1. WebSocket is not a pure socket protocol. There is an initial HTTP
|
|
|
+ like handshake to allow easy hand-off by web servers and allow
|
|
|
+ some origin policy exchange. Also, each WebSocket frame begins
|
|
|
+ with 0 ('\x00') and ends with 255 ('\xff').
|
|
|
|
|
|
2. Javascript itself does not have the ability to handle pure byte
|
|
|
- strings (Unicode encoding messes with it) even though you can read
|
|
|
- them with Web Sockets. The python proxy base64 encodes the data so
|
|
|
- that the Javascript client can base64 decode the data into an array.
|
|
|
+ strings (Unicode encoding messes with it) even though you can
|
|
|
+ read them with WebSocket. The python proxy encodes the data so
|
|
|
+ that the Javascript client can base64 decode the data into an
|
|
|
+ array. The client requests this encoding
|
|
|
+
|
|
|
+ 3. When using the web-socket-js as a fallback, WebSocket 'onmessage'
|
|
|
+ events may arrive out of order. In order to compensate for this
|
|
|
+ the client asks the proxy (using the initial query string) to add
|
|
|
+ sequence numbers to each packet.
|
|
|
|
|
|
|
|
|
Usage
|
|
@@ -34,7 +44,7 @@ Usage
|
|
|
|
|
|
* run a VNC server.
|
|
|
|
|
|
- `Xvnc :1`
|
|
|
+ `vncserver :1`
|
|
|
|
|
|
* run the python proxy:
|
|
|
|
|
@@ -52,7 +62,7 @@ Usage
|
|
|
* Point your web browser at http://localhost:8080/vnc.html
|
|
|
(or whatever port you used above to run the web server).
|
|
|
|
|
|
-* Provide the host and port where the proxy is running and the password
|
|
|
- that the vnc server is using (if any).
|
|
|
-
|
|
|
+* Provide the host and port where the proxy is running and the
|
|
|
+ password that the vnc server is using (if any). Hit the Connect
|
|
|
+ button and enjoy!
|
|
|
|