クライアントの接続方法
ストリーミング API は HTTP/1.1 要求-応答モデルと Bayeux プロトコル (CometD 実装) を使用します。Bayeux クライアントは複数の段階���ストリーミング API に接続します。
- CometD はハンドシェイク要求を送信します。
- ハンドシェイクが成功すると、/meta/handshake チャネルのカスタムリスナーはチャネルに登録要求を送信します。
- CometD は long polling を使用して接続を維持します。

クライアントは、長命 (long-lived) 接続を維持しながら、サーバからイベントを受信します。CometD は、ハンドシェイク要求、接続要求、再接続要求を実行します。カスタムコードは、その他の操作 (登録など) を実行します。クライアントは、次の条件で再接続します。
- イベント受信後
- クライアントは、イベントを受信すると、次のイベントのセットを受信するために、CometD を使用してすぐに再接続する必要があります。40 秒以内に再接続しないと、サーバが登録を期限切れにし、接続が終了します。クライアントは、カスタム /meta/handshake チャネルリスナーを使用して、ハンドシェイクと登録を最初からやり直す必要があります。
- イベントが受信されなかったとき
- イベントが生成されずにクライアントが待機しているときにサーバが接続を閉じた場合、CometD は 110 秒以内に再接続する必要があります。Bayeux サーバは、advice 項目に 110 秒の再接続期限が含まれる応答をクライアントに送信します。クライアントがこの指定時間内に再接続しないと、サーバはクライアントの CometD セッションを削除します。
- ネットワーク障害後
- 長命 (long-lived) 接続が予期しないネットワークの中断により失われた場合、CometD は再接続を試みます。この再接続が成功した場合、この新しい接続では、再ハンドシェイクにより前の登録者が削除されているため、クライアントは再登録する必要があります。クライアントは、/meta/handshake メタチャネルをリスンして、接続が失われて再確立されたときに通知を受信することができます。詳細は、CometD リファレンスドキュメントの「Short Network Failures (短期間のネットワーク障害)」と「Long Network Failures or Server Failures (長期間のネットワーク障害またはサーバ障害)」を参照してください。
- 無効な認証後
- クライアント認証は無効になることがあります。たとえば、Salesforce システム管理者が OAuth トークンを取り消したり Salesforce セッションを無効にした場合、クライアント認証が無効になります。ストリーミング API は、クライアントが接続されている間は定期的に OAuth トークンまたはセッション ID を検証します。クライアント認証が無効な場合、クライアントは、401::Authentication invalid エラーと、reconnect=none を含む advice 項目によって通知されます。チャネルリスナーでエラー通知を受信したクライアントが新規イベントを受信するには、再認証と再接続が必要です。
次の図は、認証エラーが発生した後に CometD クライアントが Salesforce に接続する方法を示しています。

これらの手順の詳細は、「Bayeux プロトコル、CometD、および long polling」を参照してください。