如何仅通过一个请求就可以在浏览器中接收和显示多条消息?

时间:2019-02-10 19:22:55

标签: javascript rest api architecture

我正在使用客户端ExpressNode.js中的SuperAgent创建一个Web应用程序。我在Web服务器端运行了一个长进程,该进程每秒都会发送一条消息,直到完成为止。此过程作为 Rest API方法公开,并在第一次从客户端调用时启动。 因此,我不知道该如何完成,也不知道是否有一种方法可以使连接保持活动状态并在完成之前收到多个响应,或者我是否必须实现一个setInterval方法要求知道该进程的当前状态。

您知道实现这种功能的最佳方法是什么吗?

2 个答案:

答案 0 :(得分:1)

对,一个请求收到一个答案。因此,您可以使用setInterval在特定时间内发出请求,但是我建议您使用websockets。 签出Socket.io。 这样,只要当前状态发生变化,就可以从服务器发送更新。

答案 1 :(得分:0)

解决方案的修订版本 我将向您展示一个加载屏幕显示,该屏幕每秒变化一次,因此它可以告诉您计算机每秒对什么进行评估 看

<html>
<script>
var counter = 0;
var count = 0;
var randome = 0;
var undercount = -1; //To revert bullet behind loading bullet to original colour so that in 3 goes, the loading bar shall not be all loading colour 

console.log("Random Integer has to turn to under 5 to stop loading process");


var loadingDisplay = setInterval(myLoaderScreen, 1000);



function myLoaderScreen () {


    if (undercount > 2) {
        undercount = 0;
    }

    if (undercount < 0) {
        //Doing Nothing 
        
    }
    
    else {
        document.getElementsByClassName('Loader')[undercount].style.color = 'green'; //reverter
    }
    
    
    
    
    
    
    
    randome = Math.random() * 40;
    randome = Math.floor(randome);
    console.log("Random Integer is: "+randome);
    
    
    if (randome < 5) { //Random Integer has to turn to under 5 to stop loading process or apply limit in this if statement
        clearInterval(loadingDisplay);
    }
    
    else {
        count = counter % 3;
        document.getElementsByClassName('Loader')[count].style.color = 'blue'; //changer
        counter += 1;
        undercount += 1;
        
    }
}





</script>
<h1><span class="Load" style="color: green">Loading</span>
<span class="Loader" style="color: green">•</span>
<span class="Loader" style="color: green">•</span>
<span class="Loader" style="color: green">•</span></h1>