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?

closed as off-topic by Martin Maat, Philip Kendall, BobDalgleish, Robert Harvey Jul 27 at 20:17

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions asking us to find or recommend tools, libraries, programming languages, resources (including books, blogs, tutorials, and examples), or projects to undertake are off-topic here as they attract opinionated answers that won't have lasting value to others. You may be able to get help in The Whiteboard, our chat room." – Martin Maat, Philip Kendall, BobDalgleish, Robert Harvey
If this question can be reworded to fit the rules in the help center, please edit the question.


The standard way to do this is to use a STUN server to arrange a peer to peer connection and in cases where the topology of the network does not allow direct peer to peer connection, then use TURN to relay the connection via the TURN server.

  • Very good, thank you. – InteXX Jul 19 at 12:46

Not the answer you're looking for? Browse other questions tagged or ask your own question.