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的解决方法,通过使用这种技术,我们可以模拟双工调用 它只不过是长寿的阿贾克斯 呼叫,并将回复客户 如果发生预期事件 在服务器端,否则它将保留 平静的这颗彗星(编程) 维基百科文章解释了更多关于 方法
我在这里回答了类似的问题。请查看下面的代码演示了这一点-