我有一个正在运行的Dart http服务,如果该服务发布了一个文件,我想将此调用传递给另一个服务。我觉得管道是正确的方式,但我不知道我能做到这一点?!
如果您已经接收到传入请求,则客户机与您的服务器建立了TCP连接。你不能把它转发到另一个服务器。
你可以做的是返回一个301重定向响应,这应该使请求者尝试其他服务器。
另一种方法是自己从另一个服务器获取数据,并将其作为对原始请求的响应交付。您可以使用流管道。
类似:
Future handleRequest(HttpRequest request) {
return new HttpClient() // Or reuse an existing client if it happens often
.getUrl(createOtherServerUrl(request))
.then((newRequest) => newRequest.close())
.then((response) => response.pipe(request.response));
}
管道是命令行shell的一个特性。
当你的服务器接收到一个请求时,它可以向"另一个服务器"创建一个新的请求,并将从传入请求中接收到的数据发送到这个"另一个服务器"。
shelf_proxy可能会帮到你。