gRPC ストリーミング
StreamWatcher は gRPC ストリーミングによるリアルタイムイベント受信を行います。ローカル開発やプロトタイピングに推奨される方式で、外部公開 URL が不要です。
セットアップ
Section titled “セットアップ”// ESMimport { OAuth2Authenticator, StreamWatcher, EventType } from 'mixi2-js';import type { EventHandler, Event } from 'mixi2-js';// CJSconst { OAuth2Authenticator, StreamWatcher, EventType } = require('mixi2-js');import { OAuth2Authenticator, StreamWatcher, EventType } from '@otoneko1102/mixi2-js';import type { EventHandler, Event } from '@otoneko1102/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();コンストラクタ
Section titled “コンストラクタ”new StreamWatcher(options: StreamWatcherOptions)| プロパティ | 型 | 必須 | 説明 |
|---|---|---|---|
streamAddress | string | ○ | Stream サーバーアドレス |
authenticator | Authenticator | ○ | 認証インスタンス |
| メソッド | 戻り値 | 説明 |
|---|---|---|
watch(handler) | Promise<void> | イベント監視を開始 |
stop() | void | 監視を停止し接続を閉じる |
再接続の仕様
Section titled “再接続の仕様”| 項目 | 値 |
|---|---|
| 再接続方式 | 指数バックオフ(1 秒 → 2 秒 → 4 秒) |
| 最大リトライ回数 | 3 回 |
| Ping イベント | SDK 内部で処理(handle には渡されない) |
EventHandler インターフェース
Section titled “EventHandler インターフェース”Webhook・gRPC ストリーム共通のイベントハンドラインターフェースです。
interface EventHandler { handle(event: Event): void | Promise<void>;}handle内で発生したエラーはログ出力され、処理は継続します- Ping イベントは SDK 内部で処理されるため
handleには渡されません - Webhook 方式では
handleの結果にかかわらず常に HTTP 204 が返されます
詳細は 公式ドキュメント を参照してください。