novnc / novnc Goto Github PK
View Code? Open in Web Editor NEWVNC client web application
Home Page: https://novnc.com
License: Other
VNC client web application
Home Page: https://novnc.com
License: Other
Is there one yet ? is not there should be and easy to do.
There doesn't appear to be anything in the python version of websockify that reaps zombie processes. Certainly it leaves a load in the process list when I run it up on Ubuntu.
It looks like the SIGCHLD signal has to be ignored completely:
signal.signal(signal.SIGCHLD, signal.SIG_IGN)
or there needs to be a reap loop in the do_SIGCHLD procedure using something like:
os.waitpid(-1, os.WNOHANG)
to replicate what the ignore does automatically.
HTH
NeilW
Hello,
I'm having trouble connecting with your VNC client.
I am using tightvncserver. I have noVNC and it's dependencies installed. I am using dyndns to map the hostname lajik.dyndns.org:5956 to my machine. I am running Ubuntu 10.10 and attempting to log in with the latest Trunk of Minefield. I hope this would be all the info, please let me know if you need additional information. Thanks!
Here is the Console output...
sudo /home/msersen/Dropbox/Apps/kanaka-noVNC-bf5ee68/utils/launch.sh --vnc LDPW:4 --web 5955 --proxy 5956
[sudo] password for msersen:
Starting webserver on port 5955
Started webserver (pid: 10409)
Starting WebSockets proxy on port 5956
Waiting for connections on :5956
Started WebSockets proxy (pid: 10412)
Navigate to to this URL:
http://LDPW:5955/vnc.html?host=LDPW&port=5956
Press Ctrl-C to exit
lajik.dyndns.org - - [04/Jan/2011 12:33:00] "GET /vnc.html?logging=debug HTTP/1.1" 200 -
lajik.dyndns.org - - [04/Jan/2011 12:33:00] "GET /include/plain.css HTTP/1.1" 200 -
lajik.dyndns.org - - [04/Jan/2011 12:33:00] "GET /include/vnc.js HTTP/1.1" 200 -
lajik.dyndns.org - - [04/Jan/2011 12:33:00] "GET /include/ui.js HTTP/1.1" 200 -
lajik.dyndns.org - - [04/Jan/2011 12:33:00] "GET /include/black.css HTTP/1.1" 200 -
lajik.dyndns.org - - [04/Jan/2011 12:33:00] "GET /include/util.js HTTP/1.1" 200 -
lajik.dyndns.org - - [04/Jan/2011 12:33:00] "GET /include/webutil.js HTTP/1.1" 200 -
lajik.dyndns.org - - [04/Jan/2011 12:33:00] "GET /include/base64.js HTTP/1.1" 200 -
lajik.dyndns.org - - [04/Jan/2011 12:33:00] "GET /include/des.js HTTP/1.1" 200 -
lajik.dyndns.org - - [04/Jan/2011 12:33:00] "GET /include/canvas.js HTTP/1.1" 200 -
lajik.dyndns.org - - [04/Jan/2011 12:33:00] "GET /include/rfb.js HTTP/1.1" 200 -
lajik.dyndns.org - - [04/Jan/2011 12:33:00] "GET /include/web-socket-js/swfobject.js HTTP/1.1" 200 -
lajik.dyndns.org - - [04/Jan/2011 12:33:00] "GET /include/web-socket-js/FABridge.js HTTP/1.1" 200 -
lajik.dyndns.org - - [04/Jan/2011 12:33:00] "GET /include/web-socket-js/web_socket.js HTTP/1.1" 200 -
1: got client connection from 192.168.1.16
1: forking handler process
1: Sending flash policy response
1: No connection after handshake
2: got client connection from 192.168.1.16
2: forking handler process
2: using plain (not SSL) socket
2: using protocol version 76
2: connecting to: LDPW:4
2: handler exception: [Errno 111] Connection refused
3: got client connection from 192.168.1.16
3: forking handler process
3: handler exception: [Errno 336265218] _ssl.c:339: error:140B0002:SSL routines:SSL_CTX_use_PrivateKey_file:system lib
4: got client connection from 192.168.1.16
4: forking handler process
4: handler exception: [Errno 336265218] _ssl.c:339: error:140B0002:SSL routines:SSL_CTX_use_PrivateKey_file:system lib
5: got client connection from 192.168.1.16
5: forking handler process
5: handler exception: [Errno 336265218] _ssl.c:339: error:140B0002:SSL routines:SSL_CTX_use_PrivateKey_file:system lib
**********************************************************************************
and here is the FireBug debug output...
**************************************************************************************
">> RFB.init_ws"
"connecting to wss://LDPW:5956/"
"<< RFB.init_ws"
">> WebSocket.onclose"
"New state 'failed', was 'connect'. Msg: Server disconnected"
"Clearing connect timer"
"<< WebSocket.onclose"
"New state 'failed', was 'failed'."
"New state 'connect', was 'failed'."
">> RFB.init_ws"
"connecting to wss://LDPW:5956/"
"<< RFB.init_ws"
">> WebSocket.onclose"
"New state 'failed', was 'connect'. Msg: Server disconnected"
"Clearing connect timer"
"<< WebSocket.onclose"
"New state 'failed', was 'failed'."
Hello,
At first congratulate Kanaka for his work on novnc !
I'd like to run novnc with the encoder "tightpng", however, i can't find VNC server on windows with this encoder...
Do you know a VNC server (windows) with A "tightPNG encoder" ?
Thanks.
In trying to run the vnc_perf.html file, it complains of not being able to find data_multi.js. I've looked around and I can't find any such file. I can't find anything else that would provide things like VNC_frame_data_multi[]. Did this file not make it into the commit for vnc_perf.html?
This is to track https://github.com/gimite/web-socket-js/issues/issue/53
In summary, these results show web-socket-js with Opera has dramatic slow down over time.
fail to connect to qemu
Hi, I tried to connect to the vnc server of qemu like:
./qemu -boot d -cdrom ~/windowsXP.iso -m 100M -vnc :5
run noVNC like:
./utils/launch.sh --vnc 127.0.0.1:5905
browse the web:
http://ubuntu:6080/vnc.html?host=ubuntu&port=6081
But got the following error message:
"Illegal basic compression received, ctl: 80"
In fact, the problem isn't quite stable when using firefox, sometimes it will be stuck at
"Authentication OK"
OR
"Sent ProtocolVersion: 003.008"
When using Chrome, the result is always "Illegal basic compression received, ctl: 80"
Environment:
Ubuntu 10.10
firefox 3.6.13
chrome 8.0.552.224
qemu 0.13.0
p.s. Connecting to qemu works fine when using Vinagre
Thank you!
Certain patterns of data sent from a VNC server can cause noVNC to fall-behind (and if it falls too far behind the browser can hang).
The problem happens when noVNC receives a combination of partial framebufferUpdates and multiple framebufferUpdates in rapid succession.
The bug is that noVNC is never processing more than one framebufferUpdate message per onmessage event. If noVNC receives an incomplete framebufferUpdate and then receives the rest of the framebufferUpdate plus another complete framebufferUpdate, then it will fall permanently behind.
Playing around with noVNC i'm not able to connect to TigerVNC, giving the following error :
"reading version failed: not an RFB client?"
Using Xvnc TigerVNC 1.0.1 - built Mar 25 2010 18:01:18
On Safari (4.0.5) on Snow Leopard
The connection succeeds for a few seconds. Performing any kind of interaction within the VNC session causes the following output on the client console.
This problem occurs in both encrypted (wss://) and non-encrypted (ws://) connections.
">> connect"
"RFB.host: 10.5.5.1"
">> init_ws"
"connecting to wss://10.5.5.1:10000/?b64encode&seq_num"
"[WebSocket] scheme: wss"
"<< init_ws"
"New state 'ProtocolVersion'."
"<< connect"
"[WebSocket] starting SSL/TLS"
">> WebSocket.onopen"
"New state 'ProtocolVersion'. Msg: Starting VNC handshake"
"<< WebSocket.onopen"
">> init_msg"
"RQ (12) 82,70,66,32,48,48,51,46,48,48,56,10"
"Server ProtocolVersion: RFB 003.008"
"New state 'Security'. Msg: Sent ProtocolVersion: RFB 003.008"
"<< init_msg"
">> init_msg"
"RQ (2) 1,1"
"New state 'Authentication'. Msg: Authenticating using scheme: 1"
"Security auth scheme: 1"
"New state 'SecurityResult'."
"<< init_msg"
">> init_msg"
"RQ (4) 0,0,0,0"
"New state 'ServerInitialisation'. Msg: Authentication OK"
"<< init_msg"
">> init_msg"
"RQ (67) 2,208,1,144,32,24,0,1,0,255,0,255,0,255,16,8,0,0,0,0,0,0,0,43,81,69,77,85,32,40,50,54,99,99,55,56,54,99,45,53,101,99,48,45,49,49,100,102,45,57,56,50,50,45,53,52,48,48,48,49,48,53,52,101,97,57,41"
"Screen size: 720x400"
"bpp: 32"
"depth: 24"
"big_endian: 0"
"true_color: 1"
">> init_canvas"
"<< init_canvas"
">> setPixelFormat"
"<< setPixelFormat"
">> setEncodings"
"<< setEncodings"
"New state 'normal'. Msg: Connected to: QEMU (26cc786c-5ec0-11df-9822-540001054ea9)"
"<< init_msg"
"sequence number mismatch RQ_seq_num:4, seq_num:6"
"Searching reorder list item 0, seq_num 8"
"Searching reorder list item 1, seq_num 13"
"Searching reorder list item 2, seq_num 14"
"Searching reorder list item 3, seq_num 23"
"Searching reorder list item 4, seq_num 24"
"Searching reorder list item 5, seq_num 16"
"Searching reorder list item 6, seq_num 17"
"Searching reorder list item 7, seq_num 18"
"Searching reorder list item 8, seq_num 6"
"New state 'failed'. Msg: Disconnected: illegal server message type undefined"
"RQ.slice(0,30):"
"sequence number mismatch RQ_seq_num:4, seq_num:7"
"Searching reorder list item 0, seq_num 8"
"Searching reorder list item 1, seq_num 13"
"Searching reorder list item 2, seq_num 14"
"Searching reorder list item 3, seq_num 23"
"Searching reorder list item 4, seq_num 24"
"Searching reorder list item 5, seq_num 16"
"Searching reorder list item 6, seq_num 17"
"Searching reorder list item 7, seq_num 18"
"Searching reorder list item 8, seq_num 6"
"Searching reorder list item 9, seq_num 7"
"Giving up!"
">> disconnect"
"New state 'closed'."
">> WebSocket.onclose"
"New state 'disconnected'. Msg: VNC disconnected"
"<< WebSocket.onclose"
"New state 'disconnected'. Msg: Disconnected"
"<< disconnect"
I've red on an interview that you are working with QEMU team to make it support your client. Do you have any information about the progress of this ?
At this time I have to build a proxy for each virtual machine so each VM needs to port, it's VNC port and its VNC proxy port. I'd like to remove this :)
I've noticed that using browser embeding some last release of webkit make noVNC to be incredibly slow, display is not refreshed, cursor have some trace, everything seems to be updated at state it was a t-1 etc..
I've tried with Chromium (last build) and Webkit (Safari Nightlies) and the result is the same.
It is mostly a bug in Webkit, but maybe not. I prefer to report it just in case
Firefox 3.6.10 segfaults when using local cursor rendering
Considering the Safari cursor rendering bug http://github.com/kanaka/noVNC/issues#issue/27 it seems likely the the cursor data I'm generating is not fully compliant. it may take a while to figure this out though since the file format (.cur) is not well documented. In the meantime I will probably turn off local cursor by default for everything except Chrome.
Using the version from the public git repo and a current chromium-browser, i can't get a successfull connection.
The javascript debug output is:
RFB.constructor
util.js:69>> Display.constructor
util.js:69User Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Ubuntu/11.04 Chromium/11.0.696.57 Chrome/11.0.696.57 Safari/534.24
util.js:69Browser: webkit 534.24
util.js:70Canvas supports imageData
util.js:70Using Canvas createImageData
util.js:70Prefering javascript operations
util.js:70Data URI scheme cursor supported
util.js:69<< Display.constructor
util.js:70Using native WebSockets
util.js:71New state 'loaded', was 'disconnected'. Msg: noVNC ready: native WebSockets, createImageData rendering
util.js:69<< RFB.constructor
util.js:71New state 'connect', was 'loaded'.
util.js:69>> RFB.connect
util.js:70connecting to ws://planetx:6080/
util.js:69<< RFB.connect
:6080Error during WebSocket handshake: protocol mismatch: base64 != sample
util.js:69>> WebSock.onclose
util.js:72New state 'failed', was 'connect'. Msg: Server disconnected
util.js:69Clearing connect timer
util.js:69<< WebSock.onclose
util.js:71New state 'failed', was 'failed'.
Output of the /utils/launch.sh is:
16: 127.0.0.1: Plain non-SSL (ws://) WebSocket connection (version 76)
16: connecting to: localhost:5900
16: 127.0.0.1: Client closed
This should be the relevant TCP/HTTP connection (captured with wireshark & "follow TCP stream"):
GET / HTTP/1.1
Upgrade: WebSocket
Connection: Upgrade
Host: planetx:6080
Origin: http://planetx:6080
Sec-WebSocket-Protocol: base64
Sec-WebSocket-Key1: {3?9R(F345 0MH00[12DC 2
Sec-WebSocket-Key2: 3 V1F9MZ60E795wb5
Cookie: logging=debug; stylesheet=default; host=planetx; port=6080; password=; encrypt=false; true_color=true; cursor=false; shared=true; connectTimeout=2
.7...Xj,HTTP/1.1 101 Web Socket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Origin: http://planetx:6080
Sec-WebSocket-Location: ws://planetx:6080/
Sec-WebSocket-Protocol: sample
Hf4..mR...L.W&i.
It looks as if error codes are not returned correctly when not using -f.
Console log:
[root@brawndo include]# ps -ef | grep ws
root 2302 15791 0 20:41 pts/1 00:00:00 grep ws
[root@brawndo include]# /var/www/html//noVNC/utils/wsproxy.py 4951 localhost:59510
[root@brawndo include]# echo $?
0
[root@brawndo include]# ps -ef | grep ws
root 2307 1 0 20:42 ? 00:00:00 /usr/local/bin/python /var/www/html//noVNC/utils/wsproxy.py 4951 localhost:59510
root 2309 15791 0 20:42 pts/1 00:00:00 grep ws
[root@brawndo include]# /var/www/html//noVNC/utils/wsproxy.py 4951 localhost:59510
[root@brawndo include]# echo $?
0
[root@brawndo include]# ps -ef | grep ws
root 2307 1 0 20:42 ? 00:00:00 /usr/local/bin/python /var/www/html//noVNC/utils/wsproxy.py 4951 localhost:59510
root 2317 15791 0 20:42 pts/1 00:00:00 grep ws
[root@brawndo include]# /var/www/html//noVNC/utils/wsproxy.py -f 4951 localhost:59510
Traceback (most recent call last):
File "/var/www/html//noVNC/utils/wsproxy.py", line 160, in
start_server()
File "/var/www/html/noVNC/utils/websocket.py", line 194, in start_server
lsock.bind((settings['listen_host'], settings['listen_port']))
File "/usr/local/lib/python2.7/socket.py", line 222, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 98] Address already in use
[root@brawndo include]# echo $?
1
Hey,
Interesting project. I've been looking for a web based VNC viewer to integrate into vboxweb_rb (http://github.com/KieranP/vboxweb_rb).
Any change of getting a ruby proxy for Ruby on Rails (or other framework) based websites?
Regards
Kieran
Opera has some oddities around keyboard event handling. One is that events aren't being stopped from bubbling up to the browser. I.e. hitting backspace causes the browser to go back, hitting '-' zooms out, etc.
Standard tight encoding and ZRLE will require zlib decompression in Javascript. This will probably be pretty slow (based on some initial testing), but having them as (non-default) options might be worthwhile in some cases.
Information about supporting a touch screen:
http://www.sitepen.com/blog/2008/07/10/touching-and-gesturing-on-the-iphone/
For performance and usability, viewport will probably be necessary for mobile devices which have a smaller screen and slower processing.
if I try to use jquery on the same page I get an error in the js console:
:4567/include/util.js:72Canvas exception: no getContext method
:4567/include/util.js:72New state 'fatal', was 'disconnected'. Msg: No working Canvas
:4567/include/ui.js:355Uncaught TypeError: Object # has no method 'setAttribute'
UI.updateState:4567/include/ui.js:355
RFB.updateState:4567/include/rfb.js:520
constructor:4567/include/rfb.js:246
RFB:4567/include/rfb.js:1623
UI.load:4567/include/ui.js:137
(anonymous function):4567/js/application.js:11
c.extend.ready:4567/js/jquery.js:26
L
I'm trying to launch it on an old ubuntu:
$ cat /etc/issue
Ubuntu 8.10 \n \l
$ python --version
Python 2.5.2
$ ./utils/launch.sh --vnc localhost:5901
Traceback (most recent call last):
File "/home/eric/noVNC/utils/web.py", line 13, in
import ssl
ImportError: No module named ssl
Failed to start webserver
Maybe you could use python-openssl when ssl support is not available?
Websockets v76 has as been deprecated in every browser, and been replaced with v07.
Will this be implemented, and if so, is this being worked on?
For example of implementation, you can look at http://www.linuxplanet.org/blogs/?cat=3471, or http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-07.
Regards
/Josef
Hi all.
This project looks cool, but it don't work for me. I am using Xtightvnc 1.3.9, Python 2.6.5, Opera 10.60.
Xtightvnc log:
19/06/10 15:22:27 rfbProcessClientProtocolVersion: client gone
19/06/10 15:22:27 Client 192.168.0.200 gone
19/06/10 15:22:27 Statistics:
19/06/10 15:22:27 framebuffer updates 0, rectangles 0, bytes 0
19/06/10 15:22:52 Got connection from client 192.168.0.200
19/06/10 15:22:52 (other clients 127.0.0.1)
wsproxy.py:
waiting for connection on port 8787
Got client connection from 127.0.0.1
using plain (not SSL) socket
b64encode=True
seq_num=True
Connecting to: localhost:5900
Traffic Legend:
} - Client receive
}. - Client receive partial
{ - Target receive
> - Target send
>. - Target send partial
< - Client send
<. - Client send partial
{<
When I add --record parameter, it make file with this content:
'>0:UkZCIDAwMy4wMDgK',
In browser is text "Starting VNC handshake" and nothing change anymore...
NoVNC stops with message "Authenticating using scheme: 1" when try to connect to a vnc server with RFB 3.3 protocol without password.
Other information:
Browser: Chrome 7, Firefox 4 beta
VNC server: vncserver (without password)
NoVNC: encrypt on
Logs (debug mode):
New state 'disconnect', was 'normal'. Msg: Disconnecting
:6080/include/util.js:71New state 'disconnected', was 'disconnect'. Msg: VNC disconnected
:6080/include/util.js:71New state 'connect', was 'disconnected'.
:6080/include/util.js:71New state 'ProtocolVersion', was 'connect'. Msg: Starting VNC handshake
:6080/include/util.js:71New state 'Security', was 'ProtocolVersion'. Msg: Sent ProtocolVersion: 003.003
:6080/include/util.js:71New state 'Authentication', was 'Security'. Msg: Authenticating using scheme: 1
:6080/include/util.js:71New state 'SecurityResult', was 'Authentication'.
VMWare implements some extensions to the protocol that would be interesting to support in noVNC. I'm unlikely to personally get around to this (and don't have access to a ESX server) but somebody might be interested in doing this.
Some relevant links:
http://mail.gnome.org/archives/gtk-vnc-list/2008-January/msg00005.html
http://wiki.multimedia.cx/index.php?title=VMware_Video
http://bluebear.org/projects/kodiak/repository/revisions/master/entry/src/com/bluebear/rfb/vnc.h
Worth considering:
In the situation of having multiple vnc servers listening each to a different port (5900, 5901, ..., 5910) I'm wondering if it "woul"d be possible to tell noVNC to connect to a single port (wsproxy) like 80 or 443 (SSL) and redirect all communication to the right port ?
Something like a parameter ('connect', 'host:port').
That would be awesome !
In Opera 11 the middle button is not suppressed and results in the default browser action (loading a new tab at the contents of the paste buffer).
Of lesser concern, in Opera 10.60 the middle mouse button gets stuck. Probably the button up event is not being caught (or not firing).
the built-in ubuntu VNC server supports types 18,1 or 18,2 for security and your vnc.js code only looks at the first type (which in this case is 18, even though it will support 1 or 2 (depending on if a password is required). A quick fix in vnc.js fixes this but I'm too lazy to get git running, so here's the fix in the issue:
after you have the line:
types = RQ.shiftBytes(num_types);
add the line:
types = types.filter(function(x){if ((x==1) || (x==2)) { return true
; } else { return false;}});
Hi,
I can make vnc.html work fine, I can even do vnc.html?host=localhost&port=8181, and all I need to do is click connect and it works. However, if I do vnc_auto.html?host=localhost&port=8181, I see a few packets go between the client and the proxy, but the client then times out.
For what it's worth, i'm using my own proxy here, but it works fine with vnc.html.
Is there any obvious way I can try to debug this problem? I can't understand why vnc.html work, but vnc_auto.html doesn't!
On plain.css:
body { margin: 0px; padding: 0px; } #VNC_controls { overflow: hidden; white-space: nowrap; } #VNC_controls li { float: left; margin-right: 5px; }
On ui.js:
// html += '<div id="VNC_controls">'; // html += ' <ul>'; // html += ' <li>Host: <input id="VNC_host"></li>'; // html += ' <li>Port: <input id="VNC_port"></li>'; // html += ' <li>Password: <input id="VNC_password"'; // html += ' type="password"></li>'; // html += ' <li><input id="VNC_connect_button" type="button"'; // html += ' value="Loading" disabled></li>'; // html += ' </ul>'; // html += '</div>'; html += '<div id="VNC_screen">'; html += ' <div id="VNC_status_bar" class="VNC_status_bar" style="margin-top: 0px;">'; html += ' <table border=0 width=100%><tr>'; html += ' <td><div id="VNC_status">Loading</div></td>'; html += ' <td width=1%>'; html += '<div id="VNC_controls">'; html += ' <ul>'; html += ' <li><input id="VNC_host" placeholder="host"></li>'; html += ' <li>:<input id="VNC_port" placeholder="port"></li>'; html += ' <li><input id="VNC_password" type="password" placeholder="password"></li>'; // html += ' <li><input id="VNC_connect_button" type="button" class="VNC_status_button"'; // html += ' value="Loading" disabled></li>'; html += ' </ul>'; html += '</div>'; html += ' </td>'; html += ' <td width=1%><div class="VNC_buttons_right">'; html += ' <input id="VNC_connect_button" type="button" class="VNC_status_button" value="Loading" disabled>'; html += ' </td>';
Hi,
By adding the following snippet to RFB.mouseButton and RFB.mouseMove, this allows to get correct mouse coordinate when the main #vnc div is scaled by CSS3 Zoom property :
mouseButton: function(x, y, down, bmask) { if (down) { RFB.mouse_buttonMask |= bmask; } else { RFB.mouse_buttonMask ^= bmask; } if ($(RFB.canvasID).style.zoom) { z = parseFloat($(RFB.canvasID).style.zoom) / 100; x = x * (1/z); y = y * (1/z); } RFB.mouse_arr = RFB.mouse_arr.concat( RFB.pointerEvent(x, y) ); RFB.flushClient(); } ... mouseMove: function(x, y) { //Util.Debug('>> mouseMove ' + x + "," + y); if ($(RFB.canvasID).style.zoom) { z = parseFloat($(RFB.canvasID).style.zoom) / 100; x = x * (1/z); y = y * (1/z); } RFB.mouse_arr = RFB.mouse_arr.concat( RFB.pointerEvent(x, y) ); }
Worth exploring. Looks like it may be merged into QEMU in the not too distant future.
It fails to connect using handshake :
Handshake ['\x80|\x01\x03\x01\x00c\x00\x00\x00\x10\x00\x00/\x00\x00\x05\x00\x00\x04\x00\x005\x00\x00\n\x00\x00\t\x00\x00\x03\x00\x00\x08\x00\x00\x06\x00\x002\x00\x003\x00\x008\x00\x009\x00\x00\x16\x00\x00\x15\x00\x00\x14\x00\x00\x13\x00\x00\x12\x00\x00\x11\x00\x004\x00\x00:\x00\x00\x18\x00\x00\x1b\x00\x00\x1a\x00\x00\x17\x00\x00\x19\x00\x00\x01\x01\x00\x80\x02\x00\x80\x03\x00\x80\x04\x00\x80\x06\x00@\x07\x00\xc0\x0f!p\xd8\xf0\xb1u1\xe0|\x01\xca\x9c\xb7sK']
I've also try to check if handshake starts with \x80, but connection fails.
It works great on Chrome. Any idea ?
Is this library compatible with VirtualBox's RDP Server? I'm not sure how'd I'd go about checking it, so that's why I'm asking here.
Regards
Kieran
I am trying to connect to the latest version of tightvncserver (2.0.2 Jul 8 2010) running on a Windows 2000 box. I have started noVNC via the launch.py script you provided. This is the output from the server:
6: got client connection from {myip}
6: forking handler process
6: using plain (not SSL) socket
6: using protocol version 76
6: connecting to: {tightvncserverip}:5903
6: handler exit: Client closed
In tightvncserver, I get the following messages:
[2052] 2010-12-17 07:58:25 @ No console user process id specified (system error: The requested resource is in use (error code 170))
[2052] 2010-12-17 07:58:25 @ The DesktopServerApplication dispatcher has failed with error: Anonymous pipe read() function failed (The pipe has been ended. (109))
[2236] 2010-12-17 07:58:25 @ No console user process id specified (system error: The system cannot find the file specified (error code 2))
I don't know if it makes a difference, but I'm also viewing the tightvncserver machine via RDP at the same time I'm trying to connect to it via noVNC.
Looking at the tightvncserver code, it seems it's dying because m_userProcessToken is equal to zero in the WTS::queryConsoleUserToken function. That's as far as I got with it.
Any ideas? Thanks for the great concept and implementation!
Im trying to get VNC display through noVNC proxy but no luck so far. Client browser is Chrome 5.0.375.125 on MacOSX. noVNC web interface loads ok but VNC connect fails. Here are the launch script log and browser javascript console log. Any ideas whats wrong? I can connect to this vnc display with other clients.
./utils/launch.sh --vnc funcman.active.ee:5900
Starting webserver on port 6080
Started webserver (pid: 29974)
Starting WebSockets proxy on port 6081
waiting for connection on port 6081
Started WebSockets proxy (pid: 29977)
Navigate to to this URL:
http://funcman.active.ee:6080/vnc.html?host=funcman.active.ee&port=6081
Press Ctrl-C to exit
192.168.1.69 - - [04/Aug/2010 20:40:25] "GET /vnc.html?host=funcman.active.ee&port=6081&logging=debug HTTP/1.1" 200 -
192.168.1.69 - - [04/Aug/2010 20:40:25] "GET /include/plain.css HTTP/1.1" 200 -
192.168.1.69 - - [04/Aug/2010 20:40:25] "GET /include/black.css HTTP/1.1" 200 -
192.168.1.69 - - [04/Aug/2010 20:40:25] "GET /include/vnc.js HTTP/1.1" 200 -
192.168.1.69 - - [04/Aug/2010 20:40:25] "GET /include/default_controls.js HTTP/1.1" 200 -
192.168.1.69 - - [04/Aug/2010 20:40:25] "GET /include/util.js HTTP/1.1" 200 -
192.168.1.69 - - [04/Aug/2010 20:40:26] "GET /include/base64.js HTTP/1.1" 200 -
192.168.1.69 - - [04/Aug/2010 20:40:26] "GET /include/des.js HTTP/1.1" 200 -
192.168.1.69 - - [04/Aug/2010 20:40:26] "GET /include/canvas.js HTTP/1.1" 200 -
192.168.1.69 - - [04/Aug/2010 20:40:27] "GET /include/rfb.js HTTP/1.1" 200 -
192.168.1.69 - - [04/Aug/2010 20:40:29] code 404, message File not found
192.168.1.69 - - [04/Aug/2010 20:40:29] "GET /favicon.ico HTTP/1.1" 404 -
Got client connection from 192.168.1.69
using plain (not SSL) socket
Ignoring exception:
Traceback (most recent call last):
File "/opt/test/noVNC/utils/websocket.py", line 208, in start_server
csock = do_handshake(startsock)
File "/opt/test/noVNC/utils/websocket.py", line 132, in do_handshake
h = parse_handshake(handshake)
File "/opt/test/noVNC/utils/websocket.py", line 76, in parse_handshake
var, delim, val = line.partition(": ")
AttributeError: 'str' object has no attribute 'partition'
waiting for connection on port 6081
Javascript console:
Canvas.init
:6080/include/util.js:128Canvas supports imageData
:6080/include/util.js:128Using Canvas createImageData
:6080/include/util.js:128Prefering javascript operations
:6080/include/util.js:128Data URI scheme cursor supported
:6080/include/util.js:127<< Canvas.init
:6080/include/util.js:128Using native WebSockets
:6080/include/util.js:129New state 'loaded', was 'disconnected'. Msg: noVNC ready (using native WebSockets)
:6080/include/util.js:129New state 'connect', was 'loaded'.
:6080/include/util.js:128connecting to ws://funcman.active.ee:6081/
:6080/include/util.js:127>> WebSocket.onclose
:6080/include/util.js:129New state 'disconnected', was 'connect'. Msg: VNC disconnected
:6080/include/util.js:127<< WebSocket.onclose
I know that OSX is a bastardisation of the spec, but i'm unsure about Ubuntu.
Ubuntu reports as "Invalid server version RFB 003.007", which as far as I know should be valid?
I haven't fully grok'd the code yet, so I'm unsure as to whats happening in the cases.
I've started my own implementation of a Canvas VNC client previously using a Ruby backend... there I tried to handle these cases by negotiating a fall back to an earlier version of the protocol, which was my interpretation of the spec.
Great project though - nice to see other people have picked up the same idea but gone further with it.
Hello,
I apologize if this is not the right place to submit this, but I've been trying to get noVNC working on my Mac mini for a couple days and would appreciate some help. I've followed the info the readme.md, and have tried it with the native Mac screen sharing (which is the Mac's VNC built-in server), and tried with VineServer; I keep getting 'connect timeout' errors. I added the logging=debug to the URL, but am not able to interpret the results in a useful way. Connect timeout seems straight forward enough, I just don't know why the connection is not happening.
What information am I missing, or should I provide to help troubleshoot this issue?
Thank you.
SteveO
Often after the second disconnect, web-socket-js (or probably Flash) hangs the tab.
Hi,
I am looking for a way to add basic http authentication to noVNC. First I thought I would use a reverse proxy (a la nginx), but then realized it is impossible, because nginx speaks HTTP/1.0, which does not support websockets.
I see I can amend websocket.py (somewhere around SplitHTTPHandler), but I doubt it's the best solution, since websockify is not intending to be a full-fledged web server :)
Any suggestions how I can proxy websockets?
Thanks.
"use strict" seems to force variables to be declared before use.
Cappuccino introduce a file-scoped system (if var toto is declared as is in file it is file-scoped, if it is just toto is global-scoped)
As these two mode are incompatibles, would you mind t remove "use strict" ?
A nice feature for me and all others with non-US keyboards is to add a keyboard layout option list and/or trying to auto detect locale settings from the browser.
This problem http://github.com/gimite/web-socket-js/issues#issue/17 causes frames to be dropped in Opera. So the rendering will start but eventually you will hit a packet drop and the client won't be able to recover.
Add config option to enable/disabled shared mode.
Right now the option is just hard-coded to enabled.
stunnel does pretty much the same thing as wsproxy, but only for TLS/SSL. It would be very interesting to add WebSockets support.
Chrome log:
New state 'failed', was 'Security'. Msg: Disconnected: unsupported security types: :6080/include/util.js:130
Anyone?
The local cursor rendering in Safari is messed up. Transparent areas are purple and the cursor is flipped vertically and horizontally.
When noVNC displays lot of informations, CPU reach 100%
for example tar -xzvf a_big_tar.tgz on a remote computer displays a lot a lines and navigator (currently Webkit) reach 100% CPU
I'm sure there are some performances improvments by dropping some refresh cycle or something.
This patch fixes some build issues for the C implementation of wsproxy.
http://revolf.free.fr/osx/patches/noVNC-0001-Mac-OS-X-build-fixes.patch
(how do one add a file to those tickets ???)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.