Closed primalmotion closed 11 years ago
The tightPNG encoding has been implemented in the tight-png branch of this repository: git://git.iksaif.net/qemu.git (you'll have to configure and build it).
The built-in WebSockets support in QEMU is still pending. I have implemented WebSockets support in my fork of libvncserver (http://github.com/kanaka/libvncserver).
This is not really a bug or feature in noVNC. I'll twitter at @noVNC when there is WebSockets support in QEMU.
Has WebSocket been implemented for QEMU yet and not upstreamed or just not done at all ? Would be nice to be able to replace the Java applet in: http://dev.haiku-os.org/browser/haiku/trunk/3rdparty/mmu_man/onlinedemo/haiku.php
It looks not too bad here (when you don't move too much around) with wsproxy in Safari: http://revolf.free.fr/beos/shots/shot_qemu_haiku_onlinedemo_novnc_001.png
Unfortunately, not yet. I would love to get around to this. There is the start of an implementation here http://repo.or.cz/w/qemu/aliguori-queue.git/shortlog/refs/heads/vncws that Anthony Liguori started while we were at LinuxCon.
I also have a patch with some minor fixes to the handshaking here: https://gist.github.com/665575
The WebSockets handshake works, but the new buffering model that aliguori introduced as part of the WebSockets work doesn't work with the existing VNC data buffers.
Any updates on this issue?
I would love to work on this but haven't had time (my real job keeps me quite busy). The first part of the project would be to add direct binary data type support to websockify/websock.js because Anthony Liguori indicated to me that he probably doesn't want to base64 encoding (and thus the older protocol either) in QEMU.
I welcome help :-). Note that I want to continue supporting the older protocol and base64 encoding too in websockify/websock.js (E.g. iOS only supports the Hixie-76 protocol, and web-socket-js probably won't support binary even though it supports the rest of HyBi).
I just pushed a change to noVNC/websockify which detects if the browser has typed array support (and more importantly if the WebSocket object has binaryType/typedarray support) and sends/receives the binary data directly without base64 encode/decode. This will make the implementation in QEMU and servers much easier.
Note that noVNC indicates support for binary by sending two sub-protocols in preference order: binary, base64. The server should respond with the first one that it supports and respond with that in the handshake response. This indicates to noVNC that the server supports binary and that typed arrays should be sent received over the WebSocket API and that no base64 encode/decode should be done
I have started to work on an implementation of the new Websockets protocol for QEMU.
I have sent my patch to the QEMU mailing list: https://lists.nongnu.org/archive/html/qemu-devel/2013-01/msg03712.html
The websocket patch was accepted upstream so this bug could be closed.
Here is the commit: http://git.qemu.org/?p=qemu.git;a=commit;h=7536ee4bc3da7e9b7fdadba5ba6ade63eaace430
@thardeck, thanks for the hard work on this. I'm glad it finally came to fruition.
I have created a patch to add the missing TLS encryption for my implementation. It isn't upstream [yet] but if someone likes to test it: https://lists.gnu.org/archive/html/qemu-devel/2013-04/msg04603.html
The TLS encryption support was also accepted upstream http://git.qemu.org/?p=qemu.git;a=commit;h=0057a0d59006d00c294de0b012d9a290eb1a5c80 so the feature set should be now complete for most use cases.
I would be happy to integrate this into my picostack project. How does the command line option for KVM looks like? Or do I simply have to compile from source with "--enable-vnc-ws" option??
ok this is what I found. I have ot try it out.
This patch adds basic Websocket Protocol version 13 - RFC 6455 - support to QEMU VNC. Binary encoding support on the client side is mandatory.
Because of the GnuTLS requirement the Websockets implementation is optional (--enable-vnc-ws).
To activate Websocket support the VNC option "websocket"is used, for example "-vnc :0,websocket". The listen port for Websocket connections is (5700 + display) so if QEMU VNC is started with :0 the Websocket port would be 5700. As an alternative the Websocket port could be manually specified by using ",websocket=
" instead. Parts of the implementation base on Anthony Liguori's QEMU Websocket patch from 2010 and on Joel Martin's LibVNC Websocket implementation.
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 :)