Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 通过http将数据从服务器推送到浏览器_Asp.net_Wcf_Iis_Keep Alive - Fatal编程技术网

Asp.net 通过http将数据从服务器推送到浏览器

Asp.net 通过http将数据从服务器推送到浏览器,asp.net,wcf,iis,keep-alive,Asp.net,Wcf,Iis,Keep Alive,在一般的聊天应用程序中,客户端的浏览器总是轮询到服务器以检查新消息 // the function to check new messages in server function check(){ // but this question is less about jQuery. $.ajax({ type: "POST", url: "check.aspx", data: "someparam=123", success: function(msg

在一般的聊天应用程序中,客户端的浏览器总是轮询到服务器以检查新消息

// the function to check new messages in server
function check(){

  // but this question is less about jQuery.
  $.ajax({
    type: "POST",
    url: "check.aspx",
    data: "someparam=123",
    success: function(msg){

       // process msg here

       // CHECK IT AGAIN, but sometimes we need to make delay here
       check();
    }
  });
}
然后我读了

这让我想到,是否有可能通过传输分块HTTP(这意味着像流媒体一样,对吧?)将数据从服务器推送到客户端浏览器,并保持连接打开

在保持连接打开的同时,在服务器中,我想让一些东西运行以检查新消息。也许是这样的

while(connectionStillOpen) {
    // any new message?
    if( AnyMessage() )
    {
       // send chunked data, can I?
       SendMessageToBrowser();
       // may be we need to make delay here
       Sleep(forSomeTime);
    }
}
这是一个原始的想法

我的聊天应用程序是在ASP.net中创建的。由于我对WCF和高级IIS流媒体模块的了解较少,我需要您的建议来实现这个想法

是的,不可能是答案。但我需要知道,如果这仍然是不可能的

更新(3年后):

这正是我想要的:

是的,不可能将数据从服务器直接推送到浏览器客户端

但您可以每隔3秒钟检查服务器上的新消息,并刷新客户端界面


也许你想看看一些

有一种方法叫做反向AJAX。通过使用哪个服务器可以将数据传输到客户端,而无需客户端发出任何请求

当前一代JavaScript/Ajax库不提供对部分响应的访问;只有当整个请求完成时,您才会收到通知

如果您愿意使用Silverlight,则可以使用原始TCP连接


Comet是另一种选择——但这基本上只是长轮询,仍然源自客户端脚本。

服务器无法启动与客户端的通信。因此服务器无法将数据推送到客户端。但是您可以使用“反向AJAX”实现推送机制。下面的文章应该能提供更多的信息


无法从服务器推送数据。因为HTTP只响应请求,不能直接与客户端联系。但是我们有一个叫做COMET或ReverseAJAX的解决方法,通过使用这种技术,我们可以模拟双工调用

它只不过是长寿的阿贾克斯 呼叫,并将回复客户 如果发生预期事件 在服务器端,否则它将保留 平静的这颗彗星(编程) 维基百科文章解释了更多关于 方法


我在这里回答了类似的问题。请查看

下面的代码演示了这一点-