我需要在服务器和客户端之间建立全双工连接。目前我有。net 4.5 wpf客户端。我最初的想法是关于使用netttcpbinding的wcf服务。但它似乎只适用于windows 8。客户端应用程序必须在windows 8上启动。
我想至少支持windows 7。我在SignalR中看到了替代方案,但它将使用服务器发送的事件,我不确定。
是更好地使web客户端与js连接到服务?根据http://caniuse.com/websockets, chrome和firefox支持它很长一段时间。如果是这样,我可以用websockets托管wcf服务并从js连接到他吗?我想知道为什么浏览器支持它,而同时wpf不支持…
连接的性能也不是最后一件事,它应该很快。
WebSockets是一种允许通过单个TCP连接进行双向通信的技术。它旨在在浏览器和web服务器之间使用,但这并不意味着你不能在其他平台上使用它。
在GitHub上有一个c# WebSocket客户端(也在NuGet上),你可以用它来实验。
https://github.com/sta/websocket-sharp看你的问题,我不认为netttcpbinding是最好的选择。如果我在哪里,我将使用这个绑定:binding http://msdn.microsoft.com/en-us/library/system.servicemodel.wsdualhttpbinding(v=vs.110).aspx
该绑定是SOAP,因此您可能获得更好的兼容性,并且它是专门为双工连接设计的。
至于SignalR和js连接到服务,我想说,在这一点上,你似乎有一个工作的解决方案,改变绑定可能是一个简短的解决方案;然而,只有你自己才能真正知道。
我认为你不需要这个;但是,为了以防万一,这里有一个在wcf上使用双工的示例。(我在这个例子中使用TcpNamedPipe而不是WSDualHttpBinding;然而,您只需要做一些小的修改就可以得到想要的结果)
https://github.com/Aelphaeis/MyWcfDuplexPipeExample