【问题标题】:How to automatically refresh a web-page using ASP.NET?如何使用 ASP.NET 自动刷新网页?
【发布时间】:2009-03-16 23:38:10
【问题描述】:

我有一个“模拟”实时视频的 asp.net 应用程序。我这样做是从 mysql 数据库中获取多张图片。

问题是如何在网页上显示。?我每张图片刷新页面 1 秒,结果是图片断断续续和闪烁。

    Response.AppendHeader("Refresh", "1")

如何使页面的刷新率达到每秒 4 次?或者是否有任何实现以大陆方式显示。

如果您能回复,我将不胜感激。美好的一天(^_^)...

这是我用来从数据库中读取图像的脚本。

If dr.Read Then 读博士() Response.ContentType = "image/jpeg" '获取或设置输出流的类型 Response.BinaryWrite(dr.Item("file")) '将二进制字符流写入 http输出流 别的 Response.Write("没有当前活动的网络广播。") 万一 博士关闭()

【问题讨论】:

    标签: asp.net-2.0 refresh


    【解决方案1】:
    create a javascript method to change the image using xmlhttpobject and recursively set a timer
    
    
             function Timer() {
    
                 setTimeout("getImage(['imageContainer1'])", 200);
                 t = setTimeout("Timer()", 100);
                           }
    
            function getImage(params) {
                var request=getXMLhttpObject();
                makeRequest("ajax/ObtainImage.aspx?name='myimage'+param[1]+'.jpg",request,  imageResponseHandler(request, params));
    
                       }
    
        function getXMLhttpObject() {
    
                return  (navigator.appName == "Microsoft Internet Explorer")? new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();
                                  }
    
     function makeRequest(url,request, Handler) {
    
                 request.open("GET", url, true);
                 request.onreadystatechange = Handler;
                 request.send(null);
    
             }
    
    
        function imageResponseHandler(request,params) {
                 return function() {
                     if (request.readyState == 4)
                         document.getElementById(params[0]).src = request.responseText;
                 }
    
             }
    

    【讨论】:

    • 抱歉,我是这门语言的新手,什么是“getXMLhttpObject”?我现在知道很多这种类型的编程。你能把它转换成视觉基础吗?
    • 这是javascript,我刚刚添加了getXmlHttpObject方法
    【解决方案2】:

    我会使用一些 Javascript/Ajax 来更改内容或元刷新(可能不是快速刷新的最佳选择)。

    【讨论】:

    • 什么类型的 Javascript/Ajax??.. 你能详细说明一下吗?
    【解决方案3】:

    也许您需要考虑在页面上加载多张图片并使用 javascript 在它们之间循环。您可以使用 AJAX 获取图片,而不是刷新页面。

    【讨论】:

    • 如果我要在页面上加载多张图片。 “模拟”直播视频流的本质将丢失。
    • 您可以尝试加载它们,但在需要时使用 css/javascript 隐藏它们
    • 我认为页面加载速度会受到影响。
    【解决方案4】:

    如果你真的想模拟视频,你需要能够每秒至少显示 15 张图片 (15fps)。每秒发出这么多请求并不是一个好主意。

    如果你绝对必须这样做,我建议先“缓冲”图片,然后再显示它们,如果可能的话,分批获取它们:

    buffer = []       // cache loaded images
    bufferSize = 30   // load 30 images before playing
    
    function loadImage(src) {
       var img = new Image()
       img.src = src
       buffer.push(img)
    }
    
    function animate(target) {
       if (buffer.length > 0) {
          var img = buffer.shift()
          document.getElementById(target).src = img.src
       }
    }
    
    function bufferImages() {
       for (var i=0; i<bufferSize; i++) {
          loadImage('/ajax/ObtainImage.aspx?name=img')
       }
    }
    
    setInterval("animate('imgTarget')", 65)  // should give us about 15fps 
    setInterval("bufferImages()", 1000)  // every second
    

    【讨论】:

    • 你会推荐我使用什么类型的 ajax。
    • 如果你真的想模拟视频,你需要能够每秒至少显示15张图片(15fps)。每秒发出这么多请求并不是一个好主意...我将重写我的答案以反映这一点。
    • 我正在从数据库中读取图像,并且图像在 BLOB 类型的列字段中。我想我们已经到了顶端,我们只需要跳起来就可以了。你能帮帮我吗??
    • 如果您可以发布您用来阅读图像的脚本,我可以尝试做一个更详细的答案。
    • If dr.Read Then dr.Read() Response.ContentType = "image/jpeg" '获取或设置输出流的类型 Response.BinaryWrite(dr.Item("file")) '将二进制字符流写入 http 输出流 Else Response.Write("There is no current active webccast.") End If dr.Close()
    【解决方案5】:

    将此添加到您的 html 文档的头部。 不是最有效的方法,但它会起作用。

    <meta http-equiv="refresh" content=".25" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-21
      • 2010-10-01
      • 1970-01-01
      • 2021-04-08
      • 2015-09-08
      • 2017-09-01
      • 2017-12-21
      • 1970-01-01
      相关资源
      最近更新 更多