gRPCでFirestoreをListenする
昨年の10月にBetaリリースされたCloud Firestoreですが、公式ライブラリによるデータのリアルタイム更新は
- Web(Javascript)
- Node.js
- iOS(Swift or Objective-C)
- Android
しかサポートされていないようです。*1
GAまで待てば良いのでしょうが、今でもgRPCのListenは使えるのため、こちらを利用することでリアルタイム更新の取得が可能です。
Protocol Buffersの定義はGitHubで公開されているのでGoだと↓のようにクライアント(とサーバ)のコードを生成することができます。
Go以外でもgRPCに対応していれば良く、試しにcppでやってみたのがこちらです。
- ListenRequestのフィールドは全て決め打ち
- firestore.googleapis.comへの認証は面倒だったのでgcloud auth loginで
- 一応テスト用のGo製サーバも同梱
- Go + gRPCで簡単にサーバが作れてイイ感じ
*1:2018年1月現在