Hexabase(ヘキサベース)は企業向けのBaaS(Backend as a Service)を提供しています。認証やデータストア、ファイルストレージ、リアルタイム通知などの機能があり、企業向けのシステム開発に必要な機能をまるっと提供しています。
APIはREST APIとGraphQLを提供しています。そのAPIをラップしたSDKも開発を進めています。SDKは現在、TypeScriptとDart向けに開発しています。Dart向けのSDKは、もちろんFlutterでも利用できます。
この記事ではFlutter SDKについてインストールと、データストアのアイテムにリアルタイム通知について解説します。
パッケージとソースコード
パッケージはpub.devで公開しています。
ソースコードはGitHubにて公開しています。ライセンスはMIT Licenseです。
hexabase/hexabase-dart: Hexabase SDK for Dart & Flutter
インストール
インストールは dart pub get
で行えます。
dart pub get hexabase
インポート
SDKをインポートします。
import 'package:hexabase/hexabase.dart';
初期化
まずインスタンスを作成します。
var client = Hexabase();
別なファイルで再度インポートした場合には、以下でインスタンスを取得してください。
var client = Hexabase.instance;
アイテムの作成
データストア(クラウドデータベース)の行相当のデータがアイテムです。以下のようにして、新しいアイテムを作成します。
await client.setWorkspace('YOUR_WORKSPACE_ID');
var project = await client.currentWorkspace.project(id: 'YOUR_PROJECT_ID');
var datastore = await project.datastore(id: 'YOUR_DATABASE_ID');
// アイテムを作成
var item = await datastore.item();
// 保存しておく
await item.save();
購読する
このアイテムに対するコメント追加の操作で通知が行われます。以下のようにして、購読します。
item.subscribe('update', (itemSubscription) {
// itemSubscription.comment にコメントが入ります
// itemSubscription.item にアイテムが入ります
// itemSubscription.user にユーザーが入ります
});
コメントの作成
新しいコメントは、 item.history()
で作成します。 set
で値(コメント本文)を設定し、 save
で保存します。この操作で、該当アイテムを購読しているユーザーに対して通知が行われます。
var history = item.history();
history.set('comment', 'test');
await history.save();
通知は自分自身にも行われます。
購読を停止する
購読を停止するには、 unsubscribe
を使います。
item.unsubscribe(actionName);
通知のプロトコル
通知はSingralRを使っており、WebSocketで通信を行います。JavaScript SDKでも、Flutter SDKでも同じように通知を受け取れます。
まとめ
リアルタイム通知機能を使えば、チャットであったりコラボレーション機能を実装できます。ぜひ、Webアプリケーション開発に役立ててください。
HexabaseのFlutter SDKを使って、堅牢なWebアプリケーションを開発してください。