5.2. SSE Push 受信実装 (.NET編)¶
5.2.1. ライブラリの組み込み¶
事前に NEC BaaS .NET SDK のセットアップを行っておいて下さい。 ついで、プロジェクトに SSE Push ライブラリの組み込みを行います。
SSE Push ライブラリは GitHub の baas-ssepush-dotnet で配布しています。
SSE Push ライブラリには以下の DLL ファイルが含まれます。
- ServerSentEvents.dll : SSE ライブラリ
 - SsePushClient.dll : SSE Push 受信ライブラリ (BaaS非依存部)
 - Nec.Nebula.Push.dll : SSE Push 受信ライブラリ (BaaS依存部)
 
各 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. 備考: ユーザの紐付け¶
インスタレーションは、インスタレーション保存のタイミングでログイン中だったユーザに紐付けられます。
紐付けを変更したい場合は、ログイン操作・ログアウト操作の完了時に、 あらためてインスタレーションの保存処理を行う必要があります。