Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Web based VNC client? [closed]

Tags:

vnc

vnc-viewer

I am currently developing a web app which has a part where i have to open a specific machine through VNC to monitor its desktop.

I am required to have a web-based VNC client, which means it shouldn't install a server or any other file on the client's side. The client just opens the web browser and puts the IP of the targeted machine to open in the browser and thus runs a web-based VNC client.

What are good resources to get started in this field?

UPDATE 2013-10-29

Just FYI: back then I ended up using guacamole as @Dolph recommended.
It was:

  • very easy to set up
  • very easy to follow its code and reverse-engineer it (as long as you know java)
  • it is still used at the company I used to work for and is robust
like image 586
ccot Avatar asked Jul 13 '10 19:07

ccot


People also ask

Can you use VNC from a web browser?

You can use the VNC SDK to create an HTML 5-enabled Viewer app that will run in any desktop web browser*.

Why VNC Viewer is not working?

VNC Viewer does not have a network route to connect to the specified computer name/IP address. This error usually occurs when the IP address belongs to a different network to the network VNC Viewer is running on. Check that the computer name resolves to the correct IP address e.g. using nslookup.

How do I access VNC web?

For you to be able to access your VNC server through a browser over the internet, you have to have ports 5800 and 5900 of your hardware router pointing to the IP address of your VNC server machine. From your browser, open the following URL: http://<your vnc server ip address>:5800.

How do I fix VNC server?

As a final thing to try, please try restarting VNC Server and/or the computer running VNC Server. In Windows, this can be done via the Services utility. For Mac/Linux, right click the VNC Server icon in the system tray (by the clock), and click Stop VNC Server. Then, launch VNC Server from your Applications menu.


3 Answers

Check out the Guacamole project:

Guacamole is a clientless remote desktop gateway. It supports standard protocols like VNC and RDP. We call it clientless because no plugins or client software are required. Thanks to HTML5, once Guacamole is installed on a server, all you need to access your desktops is a web browser.

On the downside, it requires a Java server to proxy through. However, this should be trivial, even if you don't already have a Java server up and running (Tomcat is pretty simple, and Guacamole's instructions are straightforward):

Guacamole is separated into two pieces: guacamole-server, which provides the guacd proxy and related libraries, and guacamole-client, which provides the client to be served by your servlet container, usually Tomcat.

guacamole-client is available in binary form, but guacamole-server must be built from source. Don't be discouraged: building the components of Guacamole from source is not as difficult as it sounds, and the build process is automated. You just need to be sure you have the necessary tools installed ahead of time. With the necessary dependencies in place, building Guacamole only takes a few minutes.

like image 154
Dolph Avatar answered Sep 30 '22 21:09

Dolph


There are various solutions, but none of them will allow a 100% plain web app (i.e. no Flash, Java or ActiveX) to connect directly to a 100% plain VNC server. The biggest issue is that web browsers cannot make plain TCP connections. The closest thing is the incomplete WebSockets standard, but even that is a framed protocol that has a HTTP-like handshake to initiate it.

Even though Adobe Flash programs can make plain TCP connections, they still require that the server you are connecting to answer with a policy file either on port 843 or the port you are connecting to (http://code.google.com/p/doctype/wiki/ArticleFlashSecurity).

As has been noted, Guacamole requires a Java proxy to communicate between their HTML5 based interface and the VNC server.

Another option is noVNC (github) which has a full VNC client implementation in Javascript/HTML5 (unlike Guacamole where the VNC protocol is in the proxy). However, noVNC is still limited by the fact that Javascript cannot make plain TCP connections. noVNC uses WebSockets to connect to the server. noVNC includes a generic WebSockets to TCP bridge that you can run on the server (or the client for that matter) and it has no extra dependencies to install.

Update: QEMU, PocketVNC and projects derived from LibVNCServer now have built-in WebSocket server support so the websockify bridge is not needed to connect with noVNC. Also, I forgot to note as a disclaimer that I created noVNC.

like image 35
kanaka Avatar answered Sep 30 '22 23:09

kanaka


Try tightVNC.com. The last time i used it you could just point it at the IP of the machine and use it in your browser.

like image 34
Rob Avatar answered Sep 30 '22 21:09

Rob