ServiceStack 可以用于 Monotouch 和 Mono for Droid 的 HTTP 服务器推送(HTTP 流)吗
我对 HTTP 流的理解是,在响应允许将其他数据推送到客户端或浏览器之后,连接保持打开状态。
RestSharp 也可以工作。如果考虑到 Monotouch/droid,这些工作建议都不受欢迎。
ServiceStack 可以用于 Monotouch 和 Mono for Droid 的 HTTP 服务器推送(HTTP 流)吗
我对 HTTP 流的理解是,在响应允许将其他数据推送到客户端或浏览器之后,连接保持打开状态。
RestSharp 也可以工作。如果考虑到 Monotouch/droid,这些工作建议都不受欢迎。
ServiceStack 服务通常用于请求/响应类型的服务。最简单的 Comet 风格/(又名 HTTP 推送)解决方案是使用长轮询,我在这个ServiceStack 组线程中详细介绍了如何做到这一点。
ServiceStack 还支持IStreamWriter
您可以返回直接写入 HTTP 响应输出流的对象,可以在此 Web 服务示例服务中看到一个示例,该服务将图像直接写入响应流。这里的问题是,如果您想保持打开的连接,您将阻塞 HTTP Worker 线程。长轮询会在短时间内释放连接,因此
最后,另一种选择是绕过 ServiceStack 的 Web 服务来执行此特定任务,并在 ASP.NETIHttpHandler
和IHttpAsyncHandler
. 您可以通过以下方式在 ServiceStack 中注册您自己RawHttpHandlers
的:
SetConfig(new EndpointHostConfig {
RawHttpHandlers = { httpReq =>
httpReq.PathInfo.StartsWith("/streaming")
? new MyStreamingHandler()
: null;
}
});
在您的处理程序中,您可以通过 Singleton 访问您的 ServiceStack 依赖项,例如:
var myDep = EndpointHost.AppHost.TryResolve<IMyDependency>();