本帖最后由 yuehuolong 于 2009-07-15 10:51:01 编辑

解决方案 »

  1.   

    你比我强 我听都没没听过 不过听你的表述咋感觉像Ajax实现的呢?加个服务端的线程?
      

  2.   

    通过数据缓存依赖 SqlDependency,更新数据库更新缓存
    参考
      

  3.   

    听说用flash 的socket方法或者使用activex可以实现,不过接触的比较少,所以想问问大家还有什么更好的方法,wuyq11给的数据缓存依赖挺好的~
    继续等待高手~
      

  4.   

    一般就是每隔一段时间客户端去请求服务器段的数据。AJAX还是可以的吧。
      

  5.   

    同意,
    这个是缓存的XML,你可以修改下,感觉应该可以的
    static System.Web.Caching.CacheDependency cache = null;//当文件更改时此对象无效,即重新从文件读取数据
        protected void Page_Load(object sender, EventArgs e)
        {
            DataSet ds = new DataSet();
            if (Cache["xmltable"] == null || cache == null)
            {
                ds.ReadXml(Server.MapPath("XMLFile.xml"));
                //Cache.Insert("xmltable", ds);            cache = new System.Web.Caching.CacheDependency(Server.MapPath("XMLFile.xml"));
                Cache.Insert("xmltable", ds, cache);
            }
            else
            {
                Response.Write("使用的是缓存的数据!");
                ds = (DataSet)Cache["xmltable"];
            }
            GridView1.DataSource = ds;
            GridView1.DataBind();        //Cache.Remove["xmltable"];//移除缓存的数据
        }
      

  6.   

    http 无连接的。浏览器 是不会连接在服务器上, 服务器 也不会连接在服务器上,有了新的内容。服务器 有新内容了推给谁啊? 
      

  7.   

    谢谢大家的关注
    是这样的,比如一个web聊天室,如果用ajax定时刷新肯定可以实现,并且很简单,但是肯定不止最好的办法,因为如果你刷新时间过快,势必服务器的压力较大,如果刷新过慢,数据又无法很快的得到最新的。最好的办法还是服务器端通知客户端的方法。我目前的方法就是通过刷新的办法,是通过js的setTimeout定时调用ClientScript.GetCallbackEventReference获取服务器端得更新标志(有无最新数据根据标志位不同而定),如果有则出数据库读最新数据进行刷新,如果没有则不刷新。
    但是现在想寻求别的方法,所以想看看各位大侠是否有别的更好的方法~不过感觉22楼sohighthesky大侠的方法(同wuyq11大师的方法)也很不错,值得应用。
      

  8.   

     http是无状态的。用户请求完就和服务器断开连接了,服务器没办法推的。只有用户不停的去请求。
      

  9.   

    用comet模式,所有Web IM都是这样做的。具体来说,就是客户端连接服务器端后不断开,保持HTTP连接,直到服务器端有数据要推送了再立即发送。推送后断开连接,然后客户端重新发起连接。
      

  10.   

    33楼的方案就是我想找的,不过好像网上都是说的Java的,不知道有没有.net版本的。
    如果大家有兴趣可以看一看comet模式。
      

  11.   

    结贴啦,大家有兴趣的看看comet模式
    ~