コンテンツにスキップ

gRPC ストリーミング

StreamWatcher は gRPC ストリーミングによるリアルタイムイベント受信を行います。ローカル開発やプロトタイピングに推奨される方式で、外部公開 URL が不要です。

// ESM
import { OAuth2Authenticator, StreamWatcher, EventType } from 'mixi2-js';
import type { EventHandler, Event } from 'mixi2-js';
// CJS
const { OAuth2Authenticator, StreamWatcher, EventType } = require('mixi2-js');
const authenticator = new OAuth2Authenticator({
clientId: process.env.CLIENT_ID!,
clientSecret: process.env.CLIENT_SECRET!,
tokenUrl: process.env.TOKEN_URL!,
});
const handler: EventHandler = {
handle: async (event: Event) => {
console.log('Received event:', event.eventId, EventType[event.eventType]);
},
};
const watcher = new StreamWatcher({
streamAddress: process.env.STREAM_ADDRESS!,
authenticator,
});
// イベント監視開始
await watcher.watch(handler);
// 停止
watcher.stop();
new StreamWatcher(options: StreamWatcherOptions)
プロパティ必須説明
streamAddressstringStream サーバーアドレス
authenticatorAuthenticator認証インスタンス
メソッド戻り値説明
watch(handler)Promise<void>イベント監視を開始
stop()void監視を停止し接続を閉じる
項目
再接続方式指数バックオフ(1 秒 → 2 秒 → 4 秒)
最大リトライ回数3 回
Ping イベントSDK 内部で処理(handle には渡されない)

Webhook・gRPC ストリーム共通のイベントハンドラインターフェースです。

interface EventHandler {
handle(event: Event): void | Promise<void>;
}
  • handle 内で発生したエラーはログ出力され、処理は継続します
  • Ping イベントは SDK 内部で処理されるため handle には渡されません
  • Webhook 方式では handle の結果にかかわらず常に HTTP 204 が返されます

詳細は 公式ドキュメント を参照してください。