Asp.net能否实现服务器推送技术? 用ajax实时刷新 觉得浪费资源在网上看到有个服务器推送技术不知道Asp.net能否实现服务器推送技术?来问问大家 有没有用过 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 java有个comet可以看看ipush server:http://www.icetechnology.com/products/ipushv2/ http://msdn.microsoft.com/zh-cn/library/ms172896.aspx http://topic.csdn.net/u/20081223/15/469ea2c1-8997-44e5-82b1-ddba85996a52.html java是可以的,至于.net,一直关注着~~~~~~ Server Push只是一种假象,Java也不例外,这是HTTP协议决定的...除非使用ActiveX或Java Applet这种C/S技术,否则不可能有真正的Server Push... 我认为不可行,http是无状态的,还是通过客户端Ajax技术进行访问比较合理。 没研究过LZ的问题,LZ具体要做什么呀? fex貌似可以,silverlight不知道可不可以。。 各位前辈看看这个是不是所谓的推技术~~<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="PushTest._Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" ><head runat="server"> <title>无标题页</title></head><body> <form id="form1" runat="server"> <div id="time"> </div> </form></body></html><script>function SetTimer(p){ document.getElementById("time").innerHTML = p;}</script>using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Threading;namespace PushTest{ public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected override void Render(HtmlTextWriter writer) { base.Render(writer); Response.Buffer = true; bool isOutput = false; Response.Write(""); Response.Flush(); int lastsecond = 0; while (Response.IsClientConnected) { Thread.Sleep(300); if (DateTime.Now.Second != lastsecond && !isOutput) { lastsecond = DateTime.Now.Second; Response.Write("<script> SetTimer('" + DateTime.Now.ToString() + "')\n </script> "); Response.Flush(); isOutput = true; } else { isOutput = false; } } } }} 恩,我想大家还是好好看看HTTP协议吧.看完了,基本上就都了解了。除非你不走HTTP协议,否则是断无可能的。 关注中,,,我想看看高手是如何做服务器推进技术,,不过好像jsp才有吧 25楼 你说有 哪里有 能找出来吗? 我是把百度 google 翻遍了 都没看到示例的 应该不行,你可以从实现原理上来分析,物理逻辑行的通才可以,否则。。我原来就是使用AJAX来实现服务器事件监听 Http协议只有被动请求,当然像20楼那样的长链接确实可以达到推的目的。不过实质上还是拉模式。通过msxml的com组件结合20楼的方法可以实现拟推模式的应用。msxml2以上版本的DomDocument有个ondataavailable的事件,使用这个事件就可以实现所需要的异步功能。 b/s可以定时刷新,为什么非要push?有什么web功能非得用服务器推送来实现? 比如数据库里面的数据有更新的时候向客户端显示!如用ajax访问是定时访问不停的请求!而如果有推的方式更节省服务器资源! 绝对可以。 Dependency Injection 依赖注射 Ioc (试试看) 搞清楚原理.BS是无状态的.既然服务器不知道客户端状态.服务器向哪推?有这几句话以后, 你还废脑筋想什么推送技术.别说asp.net不可以, JSP同样不可以. 任何一种语言都不可能在BS结构上实现推送这个行为.你可能要说有些控件或者ACTIVEX可以做到. 那一定是连接状态的socket. 不可能是BS结构. 几年前研究过 你可以参考一下http://topic.csdn.net/t/20050609/17/4071415.html 20搂的确是好办法,很奇怪为什么很多书(包括一些好书)中都没有介绍过?下一步我想改写我那个定时刷新页面的Ajax留言板了。让它不再定时刷新!而是每次有用户发言时,才向其他聊天者的页面刷新!这个用Render中的Write语句看来是可以做到的,在检测条件中加一个提交控制变量就行了。奇怪,怎么没看见有人做出来呢?另外顺便说一下,我刚刚弄了一本《ASP.NET案例精编》,作者周栋祥,大约3月份可以上市吧。这本书(VB的),对于入门者学习ASP.NET甚好。感兴趣的到时候可以留意一下。再回过头来说Push技术,既然Sun能搞,我相信MS肯定也是有方法的,只是我们某些人还不识庐山真面目而已。 这个要在试验中方能知晓,我现在没有见到具体的数据。另外,我的聊天室主要用于内联网,目的是在局域网中的员工之间交流,所以传输中长连接中断的可能性都很小。服务器就是我的Windows XP上的IIS 5.1喽,原始连接数限制为10个,经过下载微软的MetaEdit调整之后,扩展到40个毫无问题。40个连接应该够用的,另外我的每个页面中都安排了防止F5刷新的JavaScript代码,这些加在一起,希望能够实现我的目的。我刚刚看了网上的关于Commet等的一点文章(http://www.cnblogs.com/cathsfz/archive/2008/02/26/1082668.html),感到很受鼓舞,至少验证了20搂的代码应当是精华的东西。如果将来放在互联网上使用,如何定期维护长连接倒是个问题,不过网上已经有人发表解决方案了。一般一个专用服务器供40个人进行连同多媒体在内的聊天,恐怕已经可以了。也不用支持万八的。前些天为了能在留言簿的输入文本框中像QQ那样直接贴入剪贴板内的图片而做了个调查,唯有印度的一个小伙子用ActiveX做了个将近1MB的插件,用户使用时却必须降低安全允许等级!也就是说微软明知道可以实现,就是不批准大量使用。看来很多好技术都还要等待时日。 20樓雖然可用~但是會造成網頁無法完成load的狀態~~一直load~~load~load~~ Ajax+webserver读 APPlication,简单又实用. 服务器推技术现在已经在java上有明确定义了,技术就叫彗星。 在 Ajax 应用程序中实现实时数据推送http://www.ibm.com/developerworks/cn/web/wa-aj-socket/ 表的联合查询 连接不了数据库【在线】 急急急。。为什么新做的aspx页面上传到服务器就出错 如何给一个datalist模板列中的一个image控件加上超链接 mvc的views下的多层文件夹问题 求救!!!生成表格问题? 求一条Sql语句 Dropdownlist,panel,用法(紧急求助) 最近弄DIV遇见的问题,初级,大家指教啊!!! 怎样在ASP.NET(c#)中使用OCX控件或COM(组件)?? 如何在html文件中打开PDF文件流? ”运行时错误“,是Web.Config 配置文件错误吗?在我本机是正常运行的!传到万网的空间就出错了!请求各位朋友帮忙!先谢谢了!
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="PushTest._Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div id="time">
</div>
</form>
</body>
</html>
<script>
function SetTimer(p){
document.getElementById("time").innerHTML = p;
}
</script>using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Threading;namespace PushTest
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{ }
protected override void Render(HtmlTextWriter writer)
{
base.Render(writer); Response.Buffer = true;
bool isOutput = false;
Response.Write(""); Response.Flush();
int lastsecond = 0;
while (Response.IsClientConnected)
{
Thread.Sleep(300);
if (DateTime.Now.Second != lastsecond && !isOutput)
{ lastsecond = DateTime.Now.Second;
Response.Write("<script> SetTimer('" + DateTime.Now.ToString() + "')\n </script> ");
Response.Flush();
isOutput = true;
}
else
{
isOutput = false;
} }
}
}
}
看完了,基本上就都了解了。除非你不走HTTP协议,否则是断无可能的。
25楼 你说有 哪里有 能找出来吗? 我是把百度 google 翻遍了 都没看到示例的
我原来就是使用AJAX来实现服务器事件监听
有什么web功能非得用服务器推送来实现?
比如数据库里面的数据有更新的时候向客户端显示!如用ajax访问是定时访问不停的请求!而如果有推的方式更节省服务器资源!
绝对可以。
Dependency Injection 依赖注射 Ioc (试试看)
BS是无状态的.
既然服务器不知道客户端状态.
服务器向哪推?有这几句话以后, 你还废脑筋想什么推送技术.
别说asp.net不可以, JSP同样不可以. 任何一种语言都不可能在BS结构上实现推送这个行为.你可能要说有些控件或者ACTIVEX可以做到. 那一定是连接状态的socket. 不可能是BS结构.
http://topic.csdn.net/t/20050609/17/4071415.html
下一步我想改写我那个定时刷新页面的Ajax留言板了。让它不再定时刷新!而是每次有用户发言时,才向其他聊天者的页面刷新!这个用Render中的Write语句看来是可以做到的,在检测条件中加一个提交控制变量就行了。奇怪,怎么没看见有人做出来呢?另外顺便说一下,我刚刚弄了一本《ASP.NET案例精编》,作者周栋祥,大约3月份可以上市吧。这本书(VB的),对于入门者学习ASP.NET甚好。感兴趣的到时候可以留意一下。再回过头来说Push技术,既然Sun能搞,我相信MS肯定也是有方法的,只是我们某些人还不识庐山真面目而已。
前些天为了能在留言簿的输入文本框中像QQ那样直接贴入剪贴板内的图片而做了个调查,唯有印度的一个小伙子用ActiveX做了个将近1MB的插件,用户使用时却必须降低安全允许等级!也就是说微软明知道可以实现,就是不批准大量使用。看来很多好技术都还要等待时日。
http://www.ibm.com/developerworks/cn/web/wa-aj-socket/