问题如下
有一个任务,在前台由JS发向服务器,由于任务的执行时间比较长,并且有很多中间状态,想要在服务器执行任务期间,根据任务的执行状态,不断的更新前台。
现在我觉得有两种途径解决:
第一,前台查询,即在前台设置一个定时器,每隔一段时间查询服务端的执行情况,根据结果更新页面,但是担心频繁的查询影响性能,而间隔太长则无法及时更新状态;
第二,后台中断,即当服务端任务的状态有更新时,直接发消息通知前台,可惜不知道该如何实现。不知道大家有没有什么好的办法?

解决方案 »

  1.   

    第二,后台中断,即当服务端任务的状态有更新时,直接发消息通知前台,可惜不知道该如何实现。
    这个在http协议中是不被允许的,服务器永远不能主动推送消息
      

  2.   

    直接ajax轮询就行了,服务端主动推送的话需要用websocket,低版本ie不支持,服务器也需要写相应代码
      

  3.   

    ajax只能查询到某一时刻的状态,长时间任务就需要不断的查询,现在的问题是,有些状态的变化需要几分钟甚至几秒钟,而有些状态的改变可能要几个小时,甚至以天算,所以查询间隔不好设定。
      

  4.   

    ajax只能查询到某一时刻的状态,长时间任务就需要不断的查询,现在的问题是,有些状态的变化需要几分钟甚至几秒钟,而有些状态的改变可能要几个小时,甚至以天算,所以查询间隔不好设定。
    既然时间可能非常长,就别做ajax了,直接提供一个查询订单状态的链接即可,或者提供一个更新状态的按钮