title: Two-way Communication between Server and Clients
body: <p><strong>Situation</strong>: We have a web application running on a server. This application needs to fetch data from some other PC(Clients), which are on a different network.</p>
  <p>On the clients' pc there are <code>WCF</code> hosted in <code>Windows Services</code> using its their local <code>Sql db</code>. i want to make duplex communication between server and clients for share data with each other.
  data share mean share data-table,data-set,string etc between clients and server  .</p>
  <p><strong>Problem</strong> :</p>
  <p><strong>1)</strong> I have no control over the firewall, proxy, NAT on the client side PC. Mostly company Employee PCs have lots of network security e.g firewall block ICMP traffic and some port too, some Router might be Disabled port-forwarding  etc etc  , client can change network place.
  I don't want to make any setting on client side Router,proxy,firewall though .
  during communication how can i handle  that's kind of issue of client side?
  as you know skype is working perfect in that situation.</p>
  <p>firewalls very often block inbound connections to clients; the client may not be reachable from the server, it may be using NAT translation behind a router and so cannot be contacted without port forwarding being set up on the router and some new router disabled port forwarding .</p>
  <p><strong>2)</strong>  On clients side there is no IIS .</p>
  <p>I don't want to allow remote access on clients PC.</p>
  <p>There are more than 100 Clients and only one Server. one server need communicate with many clients on different network .</p>
  <p><strong>3)</strong> One side my client application is using window application and wcf hosted in window service ,Other side  on my server i'm using Web application . so its mean  communication is between desktop pc and web pc , that's issue .</p>
  <p>If both using a web application then it was not issue to make duplex communication.because i know WEBRTC is fit there lol.</p>
  <p><strong>Technology which i had already test and find  issue</strong></p>
  <p><em><strong>WSDualHttpBinding:</strong></em> Not work if client behind NAT. check this for detail <a href="https://stackoverflow.com/questions/14192453/wsdualhttpbinding-clientbaseaddress-firewalls">click here</a></p>
  <p><em><strong>MSMQ :</strong></em>  its bad technique if clients more than 1 and performance issue also because its use RAM memory . check here <a href="https://stackoverflow.com/questions/27707221/in-two-way-communication-msmq-in-wcf-can-handle-firewall-issue-of-client-side">click here</a></p>
  <p><em><strong>Xsocket:</strong></em> Its also not work if ICMP traffic block by firewall on client. check here <a href="https://stackoverflow.com/questions/27602120/xsocket-doesnt-work-if-router-or-isp-is-preventing-icmp-traffic">click</a></p>
  <p><em><strong>WebRTC:</strong></em> Its work fine but its support web to web communication .as my client side i have win app.</p>
  <p><em><strong>Socket.io:</strong></em> Its need to set up  node.js and many other thing , hard to implement because i need implement on  existence application , i am not making new application.</p>
  <p><em><strong>C#  Socket Program:</strong></em> Its wouldn't  work if client behind NAT.check here <a href="https://stackoverflow.com/questions/15280201/connect-an-ip-behind-nat-using-sockets">click for detail</a></p>
  <p><em><strong>Service Bus relay:</strong></em> Its not free even for testing .</p>
  <p><em><strong>socketPro:</strong></em> I studied i find its good but i can't find any right  sample  on google .so that i could test that.</p>
  <p><em><strong>Genuine Channels:</strong></em> I can't find any sample on google .</p>
  <p><strong>Lets see SignalR issue .:</strong>  Server side i run a console application and Client side i run two application ,one is console and other web.  when i was running console client application than it was not initiating connection with Server but when i was using  web client application then it was working fine.
  sample link is here <a href="http://sonyarouje.com/2012/10/02/signalr-real-time-pushing-of-data-to-connected-clients/#comment-89121" rel="nofollow noreferrer">SignalR two way communication</a>
  I can't understand why thas??</p>
  <p>Please tell me What is best most secure and fast way to handle this situation? what approach should i use ?</p>