【问题标题】:How to use Firebase REST Streaming with Hammock in Windows Phone 8?如何在 Windows Phone 8 中使用 Firebase REST 流和 Hammock?
【发布时间】:2014-06-30 03:57:55
【问题描述】:

我正在使用 Nest API,它支持通过 Firebase 进行 REST 流式传输。我有 REST 工作,但是我无法让它正确流式传输。这对我的应用程序非常重要,而 REST 对我想做的事情并没有效果。

我正在使用 Hammock 处理请求,代码如下:

public class NestAPI
{
    private RestClient client { get; set; }

    public NestAPI()
    {
        this.client = new RestClient();
        this.client.Authority = "https://developer-api.nest.com/";
        this.client.HasElevatedPermissions = true;
    }

    public void BeginStreaming()
    {
        RestRequest request = new RestRequest();
        request.AddParameter("auth", App.accessToken);
        request.RetryPolicy = new RetryPolicy() { RetryCount = 3 };
        //Enables streaming
        //request.AddHeader("Accept", "text/event-stream");
        //request.StreamOptions = new StreamOptions() { Duration = new TimeSpan(96, 0, 0), ResultsPerCallback = 1 };
        this.client.BeginRequest<object>(request, new RestCallback<object>(this.StreamCompletedEvent));
    }

    private void StreamCompletedEvent(RestRequest request, RestResponse<object> response, object userState)
    {
        //TO DO: check for errors first
        string json = response.Content;
    }

    public void EndStreaming()
    {
        this.client.CancelStreaming();
    }
}

此代码有效并且确实返回 JSON,但是我似乎无法启用流式传输。当我取消注释“启用流”下面的行时,回调事件永远不会触发。请务必注意,身份验证是使用 uri 参数“auth”完成的。

不幸的是,似乎没有可用的 Firebase 库,而 REST 是我唯一的选择。我想知道 JSON 属性何时发生变化并想在流式传输时设置不同的值。

【问题讨论】:

  • 我们使用的是 Hammock 还是 hammock2?前者已落伍。你在这方面有什么进展吗?尝试过 Nest 支持了吗?我很想知道结果。

标签: c# rest windows-phone-8 firebase nest-api


【解决方案1】:

我对 Hammock 不熟悉,但您能确定它设置为遵循重定向吗?流式传输端点通常会发出 HTTP 307 以通知客户端要连接的正确服务器。

【讨论】:

    【解决方案2】:

    我从未使用过 Hammock,但通过查看源代码(简要地)看来,您需要使用 StreamOptions 将其设置为流式传输请求。 Twitter 有一些开源代码在这里使用它https://github.com/camertron/twitter-windows/blob/master/Source/Twitter/Classes/API/Streaming/UserStream.cs

    您在此处配置 Hammock 的方式是等待整个请求完成,然后再调用您的回调。这(几乎)不会发生在流式请求中,因为服务器会保持连接打开以推送新结果。

    【讨论】:

    • 感谢您的回复,但我仍然无法正常工作。您提到使用 StreamOptions 进行设置 - 我是,请参阅 OP 中的代码。
    • 哎呀,没有仔细阅读注释代码。这几乎耗尽了我对 Hammock 的专业知识
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-31
    • 1970-01-01
    • 2013-01-11
    • 2011-04-08
    相关资源
    最近更新 更多