I'd like to build a client/server application that doesn't require the client to open a port in its firewall for incoming connection requests. In other words, the clients will be able to communicate with each other over the outgoing connections that they initiate with the server.
This will be very similar to, for example, any of several popular desktop remote control offerings available today. VNC Cloud comes immediately to mind.
My initial thought is to use SignalR at the server to accept connections from—and keep a channel open with—each client. When Client A wants to send something to Client B, it will contact the server with the appropriate routing command, which the server, in turn, will send to Client B.
(Note that this idea is based on my limited understanding of SignalR—I haven't yet had an opportunity to work with it. This would be my first.)
How do folks build these applications, in general? Is it something like what I've described here?
If my SignalR idea isn't the best way, what is?