首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

Asp.net怎样实现推数据?该如何解决

2012-01-12 
Asp.net怎样实现推数据?一个客户请求后一直保持连接,然后服务器不定的向浏览器发送数据。[解决办法]sf[解决

Asp.net怎样实现推数据?
一个客户请求后一直保持连接,然后服务器不定的向浏览器发送数据。

[解决办法]
sf
[解决办法]
不可能一直保持连接的
[解决办法]
用activx或者falsh
[解决办法]
据说google的webim是这样实现的 你研究下,还有一个java的开源webim服务器也是这么实现的,你搜下webim会有答案的!!!!
[解决办法]
前写天也遇到了这个问题,搜索了一些资料,但项目急没时间让我来研究 最后还是用ajax实现的
[解决办法]
客户端AJAX每隔端时间去请求服务器。
[解决办法]
服务器不定主动先客户端发数据
[解决办法]
HTTP是无状态的,客户不可能一直保持链接,只要1请求完就完全和服务器端断开,没有什么关系了。
[解决办法]
使用一个长连接推送技术,
具体就是使用了一个htmlfile的window系统保留控件,开启了一个长连接,然后不停的相浏览器推送数据

var dom = new ActiveXObject( "htmlfile);

使用这个东西就可以保持一个长链接了,这个东西本身就相当与一个浏览器控件
[解决办法]
mark.
[解决办法]
给你推荐一根书:《Ajax Patterns and Best Practices》。里面有一章是专门讲持久通信的。
[解决办法]
用flash,里边有socket
[解决办法]
呵呵。刚好前两天也看了这个。做了个例子,直接贴代码吧。

comet.aspx.cs

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.Text;
using System.Threading;
public partial class comet : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
try
{
if (Session[ "comet "] == null)
{
StringBuilder sb = new StringBuilder();
sb.Append( " ");
sb.Append( " ");
sb.Append( " ");
sb.Append( " ");
sb.Append( " ");
sb.Append( " ");
sb.Append( " ");
sb.Append( " ");
sb.Append( " ");
sb.Append( " ");
sb.Append( " ");
sb.Append( " ");
sb.Append( " ");


sb.Append( " ");
sb.Append( " ");
sb.Append( " ");
sb.Append( " ");
sb.Append( " ");
sb.Append( " ");
sb.Append( " ");
Response.Write(sb.ToString());
Response.Flush();
Session[ "comet "] = true;
}
while (true)
{
Response.Write(DateTime.Now.ToString( "yyyy-MM-dd HH:mm:ss ") + " <br /> ");
Response.Flush();
Thread.Sleep(2000);
}
}
catch (Exception ex)
{
string str = " <script> parent.document.getElementById( 'aaa ').src= 'comet.aspx ' </script> ";
Response.Write(str);
//Response.Write(ex.Message);
Response.Flush();
Response.End();
}
}
}
}


-----------------------------------------------

1.html

<script type= "text/javascript ">
function test(){
document.getElementById( "aaa ").src= "comet.aspx ";
}
</script>
<html>
<head> </head>
<body>
<input type=button value=-eee onclick= "test() " />
<iframe id= "aaa " src= " " width= "100% " height= "600 "> </iframe>
</body>
</html>
[解决办法]
comet.aspx.cs

里try catch的目的是捕获超时的异常,然后重新想客户端写js重新定位src,这样可以实现常连接
[解决办法]
ls这个实际也是拉页面而不是推页面
[解决办法]
偶也想知道,有什么技术可以让服务器端发生变化后,客户端可以及时响应
[解决办法]
jzyuchen(予晨) 你的代码重用了 Thread.Sleep(2000)..... 这个怎么叫做‘不定时’。。。每次发送后停顿2秒。。。并且是有意的,。。。如果这样其实可以用AJAX控件的Times就可以了
[解决办法]
文件下载的方式可以实现.Response.Flush();
[解决办法]
楼主看看我们的网站,估计你要的是这种技术,呵呵!
http://us.baring.cn
[解决办法]
长连接么

设置HTTP HEAD:Connection: keep-alive
并且不能乱设content-length,一定要是真实的内容长度

IE会自动读取的
[解决办法]
楼主的思路有问题哦
不是服务器端不定时推数据 而是客户端不定时拿数据
[解决办法]
做客户端算了,多方便
[解决办法]
学习..........
[解决办法]
继续学习什么是 HTTP 协议——即时连接、无状态!
------解决方案--------------------


学习中
[解决办法]
AJAX FLASH
[解决办法]
关注一下
[解决办法]
学习中.....
[解决办法]
关注一下~~

[解决办法]
关注
[解决办法]
我的那段代码用户实际访问的是1.html iframe里只请求一次comet.aspx。使用的是长连接推下来的。

Thread.Sleep(2000)只是为了方便看效果而已。
[解决办法]
这种方法的话浏览器 会一直初于加载状态,
有很资料显示Gmail chat用,new ActiveXObject("htmlfile"),但会面临一个超时问题,并且Firefox不支持??
不知道怎么解决.

这个,介绍流行WebIM的原理
http://www.maycode.com/index.php/hotspot/32-web2.0/272-webim.html?tmpl=component&print=1&page=

建议楼主用这个吧.
Dojo Cometd测试文章:http://cometdaily.com/2008/01/07/20000-reasons-that-comet-scales/
还有一个demo:http://app.lightstreamer.com/DojoDemo/

[解决办法]
关注学习下
[解决办法]
知识爆炸 要学的 太多
[解决办法]
http://topic.csdn.net/u/20070809/01/c2a1e1fc-a86f-4dce-bfaf-e4c98dbf7dc1.html

如何实现服务器推送技术

实现Server push技术非常简单。Server push在服务器的CGI脚本声明HTML文档类型时,把传统的content-type:text/html改为content-type:multipart/x-mixed-replace;boundary=BOUNDARY这样的文档类型,就会反馈给用户一个Server push类型的连接。这是Server push和Client pull的根本区别。如果CGI脚本中提供了这样的HTML文档头,服务器在处理客户机请求调用CGI脚本程序时,就会把CGI脚本中指定的数据强行推给客户机。
Server push在生成页面时会采用很多的技巧来处理用户端浏览器页面的生成。主程序和传统方式没有本质的区别,但记得在脚本中加入print“Content-Type:multipart/x-mixed-replace;boundary=BOUNDARY

热点排行