服务器向Web客户端发送消息的最佳方式是什么?

时间:2009-03-14 23:50:04

标签: asp.net javascript asp.net-mvc ajax web-applications

文章的链接也将受到赞赏 - 我不知道要搜索的术语。

我正在研究Web应用程序如何允许服务器到客户端的通信。我知道网络不是为此设计的,而且它是一个障碍,我只是想知道这是什么状态,以及最佳实践是什么。

另一种方法是通过ajax进行常规或偶尔轮询,但是Web服务器是否可以维护与Web客户端的状态连接?

编辑:提出这个问题的另一种方法是StackOverflow如何告诉页面新帖子可以在顶部显示那个小栏?

4 个答案:

答案 0 :(得分:5)

StackOverflow轮询服务器以检查是否有更多数据。

您要找的是Comet

答案 1 :(得分:1)

要从浏览器获得真正的双向通信,您需要使用Silverlight,Flash等插件技术。这些插件可以创建TCP连接,可以与服务器套接字建立双向持久连接。请注意,您无法与HTTP服务器建立TCP连接,因此您必须创建其他服务器代理才能与浏览器进行通信。

基本上,这是一个与Stackoverflow,Gmail等AJAX网站使用的完全不同的部署模型。它们都依赖于浏览器以设定的间隔轮询服务器。

答案 2 :(得分:0)

Web浏览器确实没有设置来处理这种通信。通信是单向路径,其中Web服务器正在侦听端口(通常为80或443)以便向其发送信息。

我刚刚阅读了关于彗星的链接,这是一个有趣的方法,但必须要记住的是,它仍然在技术上被客户打开。服务器正在发送代码供其执行,但浏览器最终处于控制状态,并确定服务器何时与之通信。

使用今天的Web浏览器,如果没有浏览器的帮助,服务器在技术上永远不会执行发送给它的消息。从技术上讲,您可以通过在客户端计算机上执行一些Active X控件来解决这个问题...但我还没有尝试过。

答案 3 :(得分:0)

你不能,HTTP是无国籍的。很久以前Netscape实现了HTTP Push,但它不是成功的。

我使用网络服务或类似的轮询;没有插件(即Flash,Java,Silverlight)将在其沙箱中拥有使用原始套接字的权限,因此尝试以这种方式实现它将浪费时间。