我想在我的 http 服务器中有一个简单的 API,所以每次我写到 HttpResponse 我都使用流。
所以我将所有对象都转换成流,即object->json->stream
Stream<List<int>> toStream(Object value) {
var json = JSON.encode(value);
var controller = new StreamController<List<int>>(onListen: () => UTF8.encode(json));
return controller.stream;
}
然后
(response as HttpResponse).addStream(toStream({"a": 1, "B": 2})
.then(() => response.flush())
.catchError((e, stack) {
_logger.error("Handling ${context.path} finished with an error: $e");
_logger.debug(stack.toString());
})
.whenComplete(() => response.close());
但我得到错误
Uncaught Error: Bad state: StreamSink is bound to a stream
Stack Trace:
#0 _StreamSinkImpl.close (io_sink.dart:122)
#1 _HttpOutboundMessage.close (http_impl.dart:481)
我不确定我在这里做错了什么。我看到了 File 的输入流通过管道传输到响应的示例,但我也无法使其工作。
任何帮助表示赞赏!