【问题标题】:C# HttpListener as exe on Windows client - will it "hear" a server push?C# HttpListener 作为 Windows 客户端上的 exe - 它会“听到”服务器推送吗?
【发布时间】:2012-10-17 22:28:38
【问题描述】:

我想编写一个“监听”服务器推送的应用程序.. 即服务器可以广播.. 我想通过一个开放的 Web 请求来执行此操作,该请求包含一个包含数据库值的 php 页面并返回数据库值.. 因此,如果数据库更改.. 值更改,这意味着 C# 应用程序知道触发某种类型的启动(在我的情况下,它是“刷新”请求)99.99% 的工作是通过此刷新请求完成的。 .我只需要知道..如何从服务器实现“触发器”或“事件”......这个(我知道)的标准方法是轮询x秒但我知道一个适当的事件驱动架构是很多的不错..

请记住,这与 IIS 无关...这是一个需要“侦听”Web 服务器的 Windows 客户端 C# exe。有没有人们知道的好的代码示例?

【问题讨论】:

  • 这是针对 Visual Studio 2010 的 - 我对 Windows 8 / VS 2012 没有任何意见,只是还没有人拥有 Windows 8

标签: c# asynchronous httplistener


【解决方案1】:

HTTP 是一个请求/响应协议 - 没有“推送”。常见的历史解决方法是频繁轮询和长轮询,但现在 web-sockets 是另一种选择。您可以使用来自客户端应用程序的 Web 套接字:在 Windows 8 / Server 8 上的 .net 4.5 中,框架中有一个内置客户端,但根据规范中的原始 TCP 编写一个客户端并不难(或者只是看看对于现有的客户端库)。 Web-sockets 支持双向通信,因此服务器可以自发地向客户端广播。非常适合及时更新。

您当然还需要一个 web-socket 服务器实现,但这适用于大多数平台和工具集。

【讨论】:

  • 感谢您的建议,您说这是不可行的,但事实并非如此,因为 http 连接可以保持打开“x”长度,然后在观看完就绪状态后立即作为异步事件回发,它一直在 JQuery 中完成。至于另一件事,编写 Web 套接字是一个端口侦听器,这在大多数防火墙之后是不可能的,而且(通常很遗憾)甚至是 ISP 的..
  • Marc 看来你是对的,这两个项目(客户端)github.com/sta/websocket-sharp(apache 服务器)code.google.com/p/phpwebsocket 是硬币的两面,因为客户端启动防火墙会实现它
  • 但这不是我的问题:这是一篇关于“彗星”如何从浏览器到服务器的文章,我需要 c#WINDOWSCLIENT 到服务器..stackoverflow.com/questions/5169717/how-does-facebook-chat-work“反向 Ajax”
  • 评论:这家伙做了同样的事情。 stackoverflow.com/questions/3742631/…
  • @conners “彗星”是一个总称; “彗星”中使用的主要技术是“长轮询”......我提到过。它是 Windows 客户端的事实在这里无关紧要。我坚持:即使是从 Windows 客户端,这里最合适的技术是 web-sockets。长轮询等是一种 hack - 滥用协议来使某些东西工作。 Web-sockets设计完全支持ad-hoc双向通信,意思是:服务器可以随时向客户端发送数据,与请求无关
猜你喜欢
  • 1970-01-01
  • 2012-04-11
  • 1970-01-01
  • 2010-09-25
  • 1970-01-01
  • 1970-01-01
  • 2011-06-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多