日期:2014-05-18  浏览次数:20410 次

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( " ");