2

Firebase 経由の REST ストリーミングをサポートする Nest API を使用しています。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 プロパティがいつ変更されるかを知りたいのですが、ストリーミング中に別の値を設定したいと考えています。

4

2 に答える 2

2

私は Hammock に詳しくありませんが、リダイレクトに従うように設定されていることを確認できますか? 通常、ストリーミング エンドポイントは HTTP 307 を発行して、クライアントに接続先の正しいサーバーを通知します。

于 2014-07-10T16:23:18.400 に答える