ServiceStack 可以用于 Monotouch 和 Mono for Droid 的 HTTP 服务器推送(HTTP 流媒体)
我对 HTTP 流的理解是,连接在响应后保持打开状态,允许将其他数据推送到客户端或浏览器。
RestSharp 也可以工作。如果考虑到 Monotouch/droid,这些工作建议都不受欢迎。
最佳答案
长轮询
ServiceStack 服务通常用于请求/响应类型的服务。最容易实现的 Comet 风格/(又名 HTTP 推送)解决方案是使用长轮询,我将在 ServiceStack group thread 中详细介绍如何做到这一点。
保持工作线程打开
ServiceStack 还支持 IStreamWriter
,您可以在其中返回一个直接写入 HTTP 响应输出流的对象,此示例可以在写入 Image directly to a response stream 的 Web 服务示例服务中看到。 。这里的问题是,如果您想保持打开的连接,您将阻塞 HTTP Worker 线程。长轮询会在短时间内释放连接,因此
使用您自己的自定义 ASP.NET IHttpAsyncHandler 绕过 ServiceStack
最后,另一种选择是绕过 ServiceStack 的 Web 服务来执行此特定任务,而仅在 ASP.NET 的 IHttpHandler
和 IHttpAsyncHandler
之上实现您自己的解决方案。您可以在 ServiceStack 中通过注册您自己的 RawHttpHandlers
来执行此操作:
SetConfig(new EndpointHostConfig {
RawHttpHandlers = { httpReq =>
httpReq.PathInfo.StartsWith("/streaming")
? new MyStreamingHandler()
: null;
}
});
在你的处理程序中,你可以通过 Singleton 访问你的 ServiceStack 依赖项,例如:
var myDep = EndpointHost.AppHost.TryResolve<IMyDependency>();
关于xamarin.ios - ServiceStack 能否用于 Monotouch 和 Mono for Droid 的 HTTP 服务器推送(HTTP 流媒体),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12878253/