xamarin.ios - ServiceStack 能否用于 Monotouch 和 Mono for Droid 的 HTTP 服务器推送(HTTP 流媒体)

标签 xamarin.ios xamarin.android push servicestack restsharp

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 的 IHttpHandlerIHttpAsyncHandler 之上实现您自己的解决方案。您可以在 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/

相关文章:

android - 如何使用 Xamarin Forms 自定义渲染器隐藏 Android 选项卡?

xamarin - Xamarin Android 产品版本号的奇怪行为

git - 启用 2FA 时推送到 GitHub 存储库而无需个人访问 token

iphone - 将 NSArray 与 Monotouch 结合使用

unit-testing - 从命令行进行 Xamarin 单元测试

android - 从保存的实例启动

node.js - 在node.js中打开套接字时发送数据

c# - 如何重新编译针对 MonoTouch 配置文件的程序集?

c# - 循环引用/保留循环

iphone - APNS token 的有效期是多长时间?