3

Firebase を使用してモバイル アプリケーションに取り組んでいます。モバイル アプリでは、Whatsapp と同様に、携帯電話番号に基づいてユーザーを登録する必要があります。Nexmo を使用してユーザーの携帯電話番号を確認するつもりです。番号の確認には 2 つのステップがあります。

  1. ユーザーの携帯電話番号を Nexmo API に送信すると、成功すると request_id が返され、SMS 経由でユーザーの携帯電話にコードが送信されます
  2. コードと request_id を Nexmo に送信して番号を確認します

これらのタスクを実行するために firebase-queue を使用したいと考えています。タスクの結果をクライアントに返す方法があるかどうかを知りたいです。firebase-queue のドキュメントにそのような例はありませんでした。基本的に、携帯電話番号を Nexmo API に送信するタスクを追加し、それに応じて request_id を取得して、ユーザーが入力したコードを検証する別のタスクを追加できるようにしたいと考えています。

4

2 に答える 2

7

クライアントに応答を返す方法は間違いなくあります。Flashlight 検索統合にその良い例があります。

  function doSearch(index, type, query) {
      var ref = new Firebase(URL+'/search');
      var key = ref.child('request').push({ index: index, type: type, query: query }).key();
      console.log('search', key, { index: index, type: type, query: query });
      ref.child('response/'+key).on('value', showResults);
    }

このコードはクライアント側の JavaScript アプリケーションで実行され、 を呼び出す行でサーバーに検索語を送信しますpush()。次に、関数の最後の行で応答が返されるのを「待機」します。ここで重要なのは、リクエストの送信に使用した sam push id/key を使用してレスポンスをリッスンすることです。そうすれば、リクエストとレスポンスが一致します。

Firebase Queue にはこのような「ハンドシェイク」のサポートが組み込まれていませんが、アプリのクライアント コードとサーバー コードに簡単に組み込むことができます。タスクを追加するときは、リクエスト ID ( firebase-queue サンプルのアダプター) を追加します。

var request_id = ref.push().key();
ref.child('queue/tasks').push({ requestId: request_id, foo: 'bar' });

タスク ワーカーで、通常の処理を実行してから、同じリクエスト ID ( firebase-queue サンプルのアダプター) でレスポンスをデータベースに書き戻します。

var ref = new Firebase('https://<your-firebase>.firebaseio.com/queue');
var responses = new Firebase('https://<your-firebase>.firebaseio.com/responses');
var queue = new Queue(ref, function(data, progress, resolve, reject) {
  // Read and process task data
  console.log(data);

  // Do some work
  progress(50);

  // Finish the task asynchronously
  setTimeout(function() {
    // write the response to the client
    responses.child(data.requestId).set({ allDone: true });
    // tell firebase-queue that we're done
    resolve();
  }, 1000);
});
于 2016-04-05T13:28:23.307 に答える