如何(异步)消耗使用servant的StreamGenerators生成的蒸汽终点?

时间:2018-03-08 20:50:15

标签: http haskell asynchronous servant

servant文档介绍了如何创建streaming endpoints

type StreamAPI = "userStream" :> StreamGet NewlineFraming JSON (StreamGenerator User)
streamAPI :: Proxy StreamAPI
streamAPI = Proxy

streamUsers :: StreamGenerator User

现在问题是客户端(例如用javascript编写)如何以异步方式使用端点?

1 个答案:

答案 0 :(得分:1)

注意:在较新的servant0.15 IIRC)中,流已重构。但是,如何在JavaScript中使用流终结点的问题与后端实现无关。

例如,如果您使用 Fetch API ,则可以使用阅读器API,这在MDN中有很好的解释。总结一下:

// Fetch the original image
  fetch('./tortoise.png')
  // Retrieve its body as ReadableStream
  .then(response => {
    const reader = response.body.getReader();

然后,您可以致电reader.read()来获得部分回复。