Hello Dear,First, thank you for reading my post and I totally understand that a "proxy" function will not be part of the first release of this new VNC source code.
I do want to just express a few thoughts for when you do add the proxy feature...
I understand when you talk about automatically setting up new rules for a firewall, or using a VPN to connect the host and viewer together. But I think these methods will require either a configurable firewall or require the user to manually setup and install a VPN - both of which may not work easily over a cellular connection.
This is how I hope the "proxy" feature will work:
1) The end user will simply run a "host" app on their device which will then display some unique connection "code".
2) I will enter that connection code into the "viewer" app running on my phone and then I can connect and see/control the user's device even if we both are on a cellular network.
It would be great if everything could work just that simple (no firewall rules, no vpn needed). This way I can Easily offer Immediate support to my clients without them having to jump through hoops to setup anything.
Before I answer your above question, I would like to first reiterate the three use-cases that I hope the next update can support:Hello Dear,
Because we have started the updates loop so i have 2 questions if i may regarding the public remote connection without setting up the router :
1- Should we use the same method as the TVA which is a middle ware server that transmits the connection data between clients through web sockets?
2- Should we use a proxy server to enable both parties to connect to each other without the need to open a port in the router?
Note : Option 1 & Option 2 will need a middle ware server to receive and send requests.
Thank you,
Saif
Before I answer your above question, I would like to first reiterate the three use-cases that I hope the next update can support:
1) The first use-case is to have both the host and server support "reverse connections". For example, I could setup port-forwarding on my office pc so it will route "incoming connections" on a particular port from external "hosts" app to my PC. Then I would run the "viewer" app in reverse connection mode so it is waiting for an incoming connection from a "host" app. Since I have control over my end of the connection, it is easy to setup this port-forwarding in my router.
Then, I would create a custom version of the host app that would be hard-coded to make a reverse connection to the IP address of my office pc. This would then allow my client to simply run the custom host app and connect to my waiting viewer app - allowing me to support them immediately.
I am only mentioning this use-case because I hope the next update for your host and viewer apps can support reverse connections so that they can connect to each other without the need for any "middleware" (just as VNC is designed to do).
Next, I can see at least two different use-cases where middleware would be needed:
2) I have a bunch of remote (and unattended) PC's that I need to remotely maintain (which I am looking to change to android devices soon). I am hoping that the next update of your host and viewer can operate in a mode that uses a middleware server that would allow a viewer app running on my PC to connect to any of those remote pc's at any time. So, I am thinking that I would configure each of the remote PC's to auto-load your host app to run it when the PC boots up. These host apps would then contact the middleware server every 10 seconds or so to let the middleware server know that the pc is available to be connected to. Then the viewer app would have the ability to connect to the middleware server and get a list of all the available pcs that can be connected to. Then all I would have to do is click on a host PC name and my viewer app will connect to the remote host app and allow me to control it.
In this configuration, I'm thinking that it would be best to not require any routers to be pre-configured with port forwarding, so that the host and viewer app can connect to each other even if both ends have dynamic IP addresses and also that they may not have the ability to configure their firewall/router at all.
3) The final use-case is the ability for me to be able to still support one of my clients when I am not back at my office. In this situation, it would not be practical for the clients host app to be hard coded to make a reverse connection to a fixed IP address because my portable PC or smartphone device will probably be using a connection with a dynamic IP address. In this use-case, middleware will be needed to connect the client's host app to my viewer app.
Maybe the host app could allow the client to type in their name when they first run the host app and their name will appear in the list of the available devices that my viewer app will list as available to connect to, just like the above #2 use-case. I could then click on their name and my viewer app would be connected to their host app.
I just wanted to mention the above use-cases so that they might help give you ideas for the next update of this project.
Now, to answer your question....I think it would be best to:
1) Design the middleware to utilize a database but only for the purpose of managing what devices are available to connect to.
2) Then when I click on a host device to connect to, the middleware will then act as a proxy to route the packets between the host and viewer directly to each other without any overhead (like going through a database like the TVA did).
I hope all this makes sense and I am very much looking forward to the next update!
Hi All.I would like to make a few suggestions for this new version, as well as help explain a few things that may not be clear:
With VNC you have a "host" and "viewer".
- The "Host" is the device that you want to view/control, so it is acting like a webserver. You could connect to the host like a browser connects to a webserver and the "Host" generate the screenshots like a webserver would generate webpages.
- The VNC "Viewer" is like a browser in the above example, you direct the vnc viewer to connect to a vnc host and then the viewer will show you the streaming screenshots from the host (and allow you to send keystrokes and mouse movement to the host device).
Typically to connect to a host, you just need the host's IP address and port number and password - that's is. You would then enter this info into the viewer and the viewer would connect to the host and then allow the viewer to see and control the host.
Often the host would be your client's PC or wireless device. However, their device might be behind a firewall or a cellphone network who's IP address often changes (and a lot of cellular companies don't allow "incoming" connections to cell phones). In these situations, it's not possible for the viewer to connect "to" the host.
Below are two problem scenarios (like the one just mentioned above) and my suggestions for addressing them that I hope sfsameer could consider for this next version:
1) "Variable" Host, "Fixed" viewer:
The "Host" (the client) is behind a firewall, or is running on a device with a changing IP (cell phone) and/or doesn't allow for incoming connections.
The "Viewer" (the support company, ie "Me") is a desktop PC with a fixed IP address and a firewall/router that can be configured to route incoming connections to the PC's viewer app.
Solution: Allow for the host and viewer apps to perform a "reverse connection". This way, the "viewer" on my PC would be configured to "listen" for an incoming connection from a host. Since my PC is at a fixed IP address, I can provide that address and the configured/forwarded port to the client so that they can enter it into their "host" app. The host app would make a connection into my viewer app and then I could see and control the client's device from my PC. This method eliminates the problem in which the host app can not accept incoming connections, but the viewer app can.
2) "Variable" Host, "Variable" Viewer:
The "Host" (the client) is behind a firewall, or the host is on a device with a changing IP (cell phone) and/or doesn't allow for incoming connections.
The "Viewer" is also behind a firewall, or running on a device who's IP address changes and/or doesn't allow incoming connection.
Solution: Setup a "Proxy" to connect the two to each other.
For this scenario, a proxy would be run on a cloud server and below is my suggestion on how it would work:
1) The "host" app would be designed to make short repeating connections every 5 second or so to this "proxy", basically telling the proxy that this particular host is ready for a connection.
2) The "Viewer" app would then connect to this proxy and the proxy will return a list of hosts that are ready for a connection to the viewer app. When I select a host from the list, the proxy will then return an IP address and port number that the viewer app will then use to connect to tat host. The proxy will then act as a true proxy and reroute all the packets from the viewer app to the host app and visa versa using the IP address and port number the proxy setup to do this exchange. It should route these packets directly between the input and output sockets without the use of a database - this way throughput will be maximum and server load be minimum.
By utilizing a "proxy" for this scenario, it would allow the client to run the host app on their smartphone over a cellular network, and then allow me to control (offer remote support) the client's device from my smartphone which is also operating over a cellular network.
I hope all this makes sense and I look forward to any comments on this.
Future Updates :
1- B4A Client, the android client will be able to fully control the server side (host)
2- File Transfer
3- Able to use any VNC viewer to view the Server side (Host)
4- Hidden Mode/Stealth Mode
Hello,HI, how long will the new features be up and running?
Thank.
Just to be clear, we would not be able to use the RealVNC cloud broker service, it is for their version. I was just sharing it as reference as to what we need Saif and his team to do to be able to have an alternative to RealVNC.I think they are already working on a "middleware" program that we will be able to run/host on our own web servers, so we would not need a third party cloud server.
Wow, I missed this. Totally agree that this is a very precise and clear description of what we need. Thanks Saif and team for undertaking to get 1 & 2 done.Hello Dear,
You know what i love about talking to you? you are a very detailed person which makes our lives easier, so thank you for that ❤
1- Consider it done
2- Consider it done
--------
1- Consider it done
2- Consider it done
As always, Thank you,
Saif
Payment received, thank you very much for your purchaseSee I did not actually buy this source as yet. Just paid now.
Louis
Hello,I still don't understand if this system can also be used for remote assistance from PCs to Android phones that are not manned
I mean, how do you know the network address of the phone?
And even if you know it, how do you start a connection from pc to phone?
Obviously I'm talking about a telephone connected only via the telephone data network
Hello,Hi
In the interest of consulting, even with the version now released with B4x code you can access a remote pc knowing the public ip (and enabling the firewall) right?
ty in advance
B4AVNCClient1.mainSettings(Main.ServerIP,Main.ServerPort,Main.ServerPassword)
B4AVNCClient1.StartViewer(img1)
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?