Box Developerドキュメント

イベントのLong pollingエンドポイントを取得

options
https://api.box.com/2.0
/events

イベントストリームへのLong polling更新に使用できるリアルタイムサーバーのリストを返します。

Long pollingとは、サーバーがレスポンスを送信するまでHTTPリクエストを開いたままにしておき、そのプロセスを何度も繰り返して更新されたレスポンスを受信するというコンセプトです。

イベントストリームのLong pollingは、User Eventについてのみ使用でき、Enterprise Eventについては使用できません。

Long pollingを使用するには、最初にこのエンドポイントを使用してLong polling URLのリストを取得します。次に、取得した任意のURLに対してLong pollingリクエストを発行します。

監視対象のアカウントでイベントが発生すると、new_changeという値を持つレスポンスが送信されます。このレスポンスは、最新の既知のstream_positionを使用してeventsエンドポイントにリクエストを送信するなど、さらなるアクションを促すことだけを目的としているため、その他の詳細を含んでいません。

サーバーは、このレスポンスを送信すると接続を閉じます。この時点でイベントのリスト化を再開するには、Long pollingプロセスを繰り返す必要があります。

しばらくイベントが発生せずに接続がタイムアウトになると、reconnectという値を持つレスポンスが届きます。このレスポンスを受け取ったら、このエンドポイントを改めて呼び出してプロセスを再開します。

retry_timeoutの秒数以内にイベントを受信しなかった場合は、リアルタイムサーバー (このエンドポイントのレスポンスに含まれるURLの1つ) に別のリクエストを送信する必要があります。ネットワークエラーが原因で、これを実行しなければならない場合もあります。

また、リアルタイムサーバーへのリクエスト時にmax_retriesエラーを受信した場合は、まずこのエンドポイントを呼び出してからやり直す必要があります。

レスポンス

Long pollingイベントの通常のエンドポイントの代わりに使用できるページ割りされたサーバーの配列を返します。

予期しないクライアントエラー。

options
イベントのLong pollingエンドポイントを取得
このドキュメント内で一部のAPIを試せるようになりました。
ログイン

リクエストの例

cURL
curl -i -X OPTIONS "https://api.box.com/2.0/events" \
     -H "authorization: Bearer <ACCESS_TOKEN>"
TypeScript Gen
await client.events.getEventsWithLongPolling();
Python Gen
client.events.get_events_with_long_polling()
.NET Gen
await client.Events.GetEventsWithLongPollingAsync();
Python
events = client.events().generate_events_with_long_polling()
for event in events:
    print(f'Got {event.event_type} event')
Node
client.events.getEventStream(function(err, stream) {
  if (err) {
    // handle error
  }
  stream.on('data', function(event) {
    // handle the event
  });
});

レスポンスの例

{
  "chunk_size": 1,
  "entries": [
    {
      "type": "realtime_server",
      "url": "http://2.realtime.services.box.net/subscribe?channel=cc807c9c4869ffb1c81a&stream_type=all",
      "ttl": "10",
      "max_retries": "10",
      "retry_timeout": 610
    }
  ]
}