イベントストリームへのロングポーリング更新に使用できるリアルタイムサーバーのリストを返します。
ロングポーリングとは、サーバーが応答を送信するまでHTTPリクエストを開いたままにしておき、そのプロセスを何度も繰り返して更新された応答を受信するというコンセプトです。
イベントストリームのロングポーリングは、ユーザーイベントについてのみ使用でき、エンタープライズイベントについては使用できません。
ロングポーリングを使用するには、最初にこのエンドポイントを使用してロングポーリングURLのリストを取得します。次に、取得した任意のURLに対してロングポーリングリクエストを発行します。
監視対象のアカウントでイベントが発生すると、new_change
という値を持つ応答が送信されます。この応答は、最新の既知のstream_position
を使用してeventsエンドポイントにリクエストを送信するなど、さらなるアクションを促すことだけを目的としているため、その他の詳細は含んでいません。
サーバーは、この応答を送信すると接続を閉じます。この時点でイベントのリスト化を再開するには、ロングポーリングプロセスを繰り返す必要があります。
しばらくイベントが発生せずに接続がタイムアウトになると、reconnect
という値を持つ応答が届きます。この応答を受け取ったら、このエンドポイントを改めて呼び出してプロセスを再開します。
retry_timeout
秒以内にイベントを受信しなかった場合は、リアルタイムサーバー(このエンドポイントの応答に含まれるURLの1つ)に別のリクエストを送信する必要があります。ネットワークエラーが原因で、これを実行しなければならない場合もあります。
また、リアルタイムサーバーへのリクエスト時にmax_retries
エラーを受信した場合は、まずこのエンドポイントを呼び出してからやり直す必要があります。
ロングポーリングイベントの通常のエンドポイントの代わりに使用できるページ割りされたサーバーの配列を返します。
予期しないクライアントエラー。
curl -X OPTIONS https://api.box.com/2.0/events \
-H 'Authorization: Bearer <ACCESS_TOKEN>'
EventStream stream = new EventStream(api);
stream.addListener(new EventListener() {
public void onEvent(BoxEvent event) {
// Handle the event.
}
});
stream.start();
events = client.events().generate_events_with_long_polling()
for event in events:
print('Got {0} event'.format(event.event_type))
client.events.getEventStream(function(err, stream) {
if (err) {
// handle error
}
stream.on('data', function(event) {
// handle the event
});
});