5.2. SSE Push 受信実装 (.NET編)¶
5.2.1. ライブラリの組み込み¶
事前に Nebula .NET SDK のセットアップを行っておいて下さい。 ついで、プロジェクトに SSE Push ライブラリの組み込みを行います。
以下のライブラリが必要になります。
- ServerSentEvents.dll : SSE ライブラリ
- SsePushClient.dll : SSE Push 受信ライブラリ (Nebula非依存)
- Nec.Nebula.Push.dll : SSE Push 受信ライブラリ (Nebula用)
各 DLL に対して、以下の手順を実施してください。
- プロジェクト内に DLL ファイルをコピー。
- プロジェクトを選択し、「プロジェクト」⇒「参照の追加」を選択。
- 「参照」ボタンをクリック。
- dll ファイルを選択して OK をクリック。
5.2.2. 依存ライブラリの追加¶
NuGet を使用して、以下の依存ライブラリを追加します。
- Rx-Core
- Rx-Linq
NuGet のオペレーションについては、Nebula .NET SDK ガイドの「SDKセットアップ手順」を参照してください。
5.2.4. インスタレーションを登録する¶
インスタレーションオブジェクトの Save
メソッドを呼ぶことで、インスタレーションを NEC BaaS サーバに登録できます。この登録により、サーバはあなたのアプリケーションをPushの宛先として認識します。登録以降は、Pushの待受を開始できるようになります。
この処理は、アプリケーションの起動時(Nebula初期化後)に実施してください。
なお、すでに登録済みであっても、 Save
メソッドを重ねて呼び出して問題ありません。
public async void registerInstallation() {
// インスタレーションの更新ロックを取得
NbSsePushReceiveClient.AcquireLock();
try {
// インスタレーションを取得する
var installation = NbSsePushInstallation.GetCurrentInstallation();
// 必須プロパティを設定する (設定例は後述)
installation.Channels = ...;
installation.AllowedSenders = ...;
// インスタレーションをサーバに登録する
await installation.Save();
} finally {
// インスタレーションの更新ロックを解除
NbSsePushReceiveClient.ReleaseLock();
}
}
インスタレーションの登録を行う際は、必ず NbSsePushReceiveClient の AcquireLock() を呼び出して、 インスタレーションの更新ロックを取得する必要があります。ロック解除は releaseLock() で行って下さい。
5.2.5. Pushの待受を開始する¶
インスタレーションの登録に成功すると、Pushの待受を開始できるようになります。
Pushの待受を開始するには、NbSsePushReceiveClient
オブジェクトの Connect
メソッドを呼びます。
メッセージを受信するためには NbSsePushReceiveClient にコールバックを設定します。 以下に例を示します。
// Push受信クライアント
private var _pushClient = new NbSsePushReceiveClient();
public void startPushReceive() {
// メッセージ受信コールバック
_pushClient.RegisterOnMessage("message", msg => {
// msg.Data に受信メッセージ(文字列)が引き渡される
});
// エラーコールバック
_pushClient.RegisterOnError((statusCode, errorInfo) => {
// エラー処理を行う。
if (statusCode == 401) {
// 401 エラーが発生した場合は、一定時間待ってから
// インスタレーションの登録からやりなおす。
retryRegisterInstallation();
} else {
// その他のエラー
}
});
// 接続を開始する
_pushClient.Connect();
}
5.2.6. 備考: 必須プロパティの設定例¶
インスタレーションの必須プロパティの設定例を示します。
NewsChannel
とAlarmChannel
へのPushを購読します。- 任意の送信者からのPushを受け付けます
installation.Channels = new HashSet<string>{"NewsChannel", "AlarmChannel"};
installation.AllowedSenders = new HashSet<string>{"g:anonymous"};
5.2.7. 備考: ユーザの紐付け¶
インスタレーションは、インスタレーション保存のタイミングでログイン中だったユーザに紐付けられます。
紐付けを変更したい場合は、ログイン操作・ログアウト操作の完了時に、 あらためてインスタレーションの保存処理を行う必要があります。