网络流量最小的进度条

问题描述 投票:0回答:3

问题的简短版本:我需要向用户显示流程进度。我很想使用WebSockets,但我必须一直支持IE8。由于无法使用WebSockets,我是否坚持使用JavaScript setTimeout并执行ping操作?有没有我还没有听说过的新技术?我正在寻找不涉及太多网络流量的解决方案(不是详细的解决方案,只是一种我尚未听说的技术名称)。

长期版本:

我的应用程序中有几个进度条。他们通过执行$.post开始一些过程。该过程完成了它的工作,并在过程中设置了一些会话变量来说明其进度,记录过程,文件大小等。在此初始$.post之后,我还立即启动了一个“心跳”或“ ping”过程,获取这些会话变量是为了向用户显示完成百分比,记录进程和当前文件大小。它每1/2秒触发一次,因此用户可以看到进度条平滑增加,处理的记录数平滑增加,并且可以看到生成的PDF的大小实时增长。多年来,它一直在运转。 ping过程的前端看起来像这样...
function rptCheckProgress(id)
{
    jQuery.ajax({
        async:false,
        cache:false,
        url: 'rpt.cfc?method=rptCheckProgress&rptId='+id,
        success: function(data)
        {
            jQuery('#libRptProgress').html(data);
            if (!gStopHeartBeat) setTimeout("rptCheckProgress("+id+");", 500);
        }
    });
}

现在,我必须实施更多类似这样的情况,这些情况需要“ ping”才能显示进度。我真的很讨厌做很多迷你ping操作,特别是因为使用我们的软件的网络速度非常慢,但是我不知道另一种方法。我很想使用WebSockets,但我必须一直支持IE8。由于无法使用WebSocket,我是否坚持使用JavaScript setTimeout并执行ping操作?

简短版本的问题:我需要向用户显示流程的进度。我很想使用WebSockets,但我必须一直支持IE8。由于我无法使用WebSockets,因此...

javascript jquery coldfusion internet-explorer-8 websocket
3个回答
2
投票

使用socket.io,它在可能的情况下使用WebSockets,但会回退到Long Polling。如果您不想使用socket.io,请直接使用长轮询。


1
投票

ColdFusion的Websockets实现也回退了。我相信它会落在Flash上​​……这意味着它不会覆盖所有设备,就像socket.io声称的那样。


0
投票

服务器发送的事件

© www.soinside.com 2019 - 2024. All rights reserved.