5.4. SSE Push 受信実装 (Node.js 編)¶
5.4.1. ライブラリの組み込み¶
モバイルバックエンド基盤ライブラリと SSE Push ライブラリをプロジェクトに組み込みます。
アプリケーションディレクトリ(package.jsonが存在するディレクトリ)に移動し、 以下のようにしてライブラリを組み込んでください。
$ npm install @nec-baas/ssepush-node --save
注意
npm install を実行するためには Internet 接続が必要です。 また Proxy サーバを通す必要がある場合は、"npm config set proxy" で Proxy サーバ設定を行なう必要があります。
5.4.2. 実装¶
インスタンスの生成¶
最初に、本ライブラリを require してください。 (nebula の require と初期化も必要です)
const SsePush = require('@nec-baas/ssepush-node').SsePush;
以下手順で SsePush インスタンスを生成します。
const ssePush = new SsePush(Nebula);
// デバイストークン設定
ssePush.setDeviceToken(deviceToken);
デバイストークンは、デバイスに固有の識別子です。UUIDなどを使用することを 推奨します(SsePush.uuid()で生成可能)。デバイストークンは同一デバイス では原則変更しないように、適宜保存するなどしてください。
ハートビート間隔・監視設定¶
ハートビート間隔の設定は setHeartbeatInterval で行います。 値はサーバ側の設定に合わせてください。
ssePush.setHeartbeatInterval(30);
ハートビート間隔の2倍の時間が経過してもハートビート受信ができない場合は、 onError でエラー通知されます。
なお、ハートビート間隔を設定しない場合は、ハートビート監視は行われません。
登録・受信開始¶
BaaSサーバへのインスタレーション登録と Push 待ち受けを開始します。 ユーザがログイン状態になっている場合は、インスタレーションは自動的にユーザ に紐づけされます。
// BaaSサーバへの登録と Push 待ち受けを開始
ssePush.start({
onMessage: (message) => {
// 受信処理
},
onError: (error) => {
// エラー処理
}
});
SSE Push メッセージを受信するたびに onMessage が呼び出されます。 引数でメッセージが渡されます。メッセージは以下のような JSON object で、本文は "data" に格納されます。
{
"type": "message",
"data": "This is a test.",
"lastEventId": "",
"origin": "https://baas.example.com"
}
エラー時は onError が呼び出されますので、適宜回復処理を行ってください。 ステータスコードは error.status に格納されます。
オプション¶
Proxy サーバを使用する場合は、SsePush コンストラクタの第二引数にオプション を指定してください (注: 認証付きの Proxy は使用できません)
const options = { proxy: 'http://proxy.example.com:8080' }
const ssePush = new SsePush(Nebula, options);
HTTPS接続でかつサーバ側が自己署名証明書を使用している場合は、以下のオプションを指定します。 (非推奨)
const options = { rejectUnauthorized: false }
なお、Proxy サーバ指定時に SSE Push サーバが HTTPS 接続であった場合 (Installation登録時に報告される SSE Push サーバの URL が https: であった場合)、 本ライブラリは tunnel モジュールを使用して接続を proxy するように自動構成します。 このため、tunnel モジュールを予め npm install しておく必要があります。