如何发送JSON对象的流客户端?(How to send stream of json object

2019-10-28 13:22发布

这可能是一个重复的问题,但找不到任何解决方案在那里。 我已经试图寻找它在这个快几个小时,但我的运气。

我的问题是我怎么能发送 (IDK如果流是正确的术语)JSON对象到客户端。

比如我读的DB数据,并每隔5个记录它发现我将数据发送到客户端JSON格式。 然后阅读采用了棱角分明的HttpClient lib中的客户端上的数据。

我已经尝试过expressjs response.write()但客户端无法直到我打电话给接收数据response.end()

什么是这样做的正确方法?

我在想socket.io但是这将是矫枉过正。

编辑

其他exmple

function getData(res: Response, req: Request):void {
  for(let i = 0; i<100; i++{
    res.write(JSON.stringify({data:1}) + '\n');
  }

  res.end(); // There is data received on the browser until this was called.
}

或者是这样的。 我期待一个数据将达到每1秒,但他们想出了在10秒后的同一时间。

function getData(res, req){
  const s = setInterval(()=>{
    res.write(JSON.stringify({value: 'test value'}));
  }, 1000);

  setTimeout(()=>{
    clearInterval(s);
    res.end();
  }, 10000);
}

Answer 1:

所以,我发现这个的是上面的示例代码是没有问题的也是这样做的正确方法。

当我试图直接打开网址API的浏览器,我可以看到浏览器接收数据。

问题是,我用它来获取数据的角度HttpClient的lib下,它会显示的数据,如果一切都已经下载。

但幸运的是,我发现这个包oboe.js ,它可以做我要流JSON数据是什么。 所以,当快递JS将通过发送数据res.write()双簧管将能够检索数据并准备用于消费。

你能做到这么简单。

oboe('your url').node('!', data=>{
  // process your data here.
  // the '!' selector means that oboe will just show the data if it is a valid json.
});


文章来源: How to send stream of json object to the client?