仆人文档描述了如何创建流式端点:
type StreamAPI = "userStream" :> StreamGet NewlineFraming JSON (StreamGenerator User)
streamAPI :: Proxy StreamAPI
streamAPI = Proxy
streamUsers :: StreamGenerator User
现在的问题是客户端(例如用 javascript 编写的)如何以异步方式使用端点?
仆人文档描述了如何创建流式端点:
type StreamAPI = "userStream" :> StreamGet NewlineFraming JSON (StreamGenerator User)
streamAPI :: Proxy StreamAPI
streamAPI = Proxy
streamUsers :: StreamGenerator User
现在的问题是客户端(例如用 javascript 编写的)如何以异步方式使用端点?
注意:在较新的servant
(0.15
IIRC)流中进行了重构。但是,如何在 JavaScript 中使用流式端点的问题与后端实现无关。
例如,如果你使用Fetch API,你可以使用 reader API,这在MDN中有很好的解释。总结一下:
// Fetch the original image
fetch('./tortoise.png')
// Retrieve its body as ReadableStream
.then(response => {
const reader = response.body.getReader();
然后,您可以致电reader.read()
以获取部分回复。