api.ApplicationRealtime(appID) は Server-Sent Events ストリームを開き、*rest.RealtimeStream を返します。io.EOF になるまで stream.Next() で反復処理してください。
ストリームの消費
常に defer stream.Close() を呼び出してください — 閉じられていないストリームは、アカウントの接続スロットを 1 つ占有し続けます。
イベントの形式
ストリームは 2 種類のフレームを発行します:
- システムイベント — 接続ライフサイクルのメッセージ:
REALTIME_CONNECTING、REALTIME_TIMEOUT、REALTIME_DISCONNECTED、REALTIME_RECONNECT、REALTIME_ERROR。
message イベント — アプリケーションのペイロード。Data は SDK にとって不透明で、通常は JSON です — 自分でアンマーシャルしてください:
接続の上限
1 つのアカウントで同時に開けるのは最大 5 接続 で、各接続は最大 10 分間(TTL)持続します。TTL に達するとストリームは io.EOF で終了します — サブスクライブを継続するには、ループで再接続してください。
キャンセル
rest.WithContext で context.Context を付与すると、外部からストリームを停止できます: