SmartREST リアルタイム通知

Things Cloud プラットフォームで利用可能なリアルタイム通知のエンドポイントおよびチャネルをすべて、SmartREST 構文でも使用することができます。 Bayeux Protocol の概要の理解、リアルタイム通知向けに提供するエンドポイントおよびチャネルの説明は、リアルタイム通知 API を参照してください。

リアルタイム通知と SmartREST の併用

リアルタイム通知において、SmartREST を使用するよう Things Cloud プラットフォームに指示するには、URL へ送られるすべてのリクエストに X-Id ヘッダーを含める必要があります。

メッセージ識別子

メッセージ識別子 メッセージ パラメータ 説明
80 None 固有の bayeux clientId を返す初期ハンドシェイク
81 clientId,channel 所定のチャネルへの接続
82 clientId,channel 所定のチャネルからのチャネル接続解除
83 clientId 通知を受信するための接続の確立(long-polling)
84 clientId サーバーからのクライアントの接続解除

ハンドシェイク

リクエスト例:

80

レスポンス例:

Un1q31d3nt1f13r

チャネル接続

リクエスト例:

81,Un1q31d3nt1f13r,/mychannel

レスポンス例:

エラー発生時を除き、当該チャネル接続について特定のレスポンスは存在しません。

チャネル接続解除

リクエスト例:

82,Un1q31d3nt1f13r,/mychannel

レスポンス例:

エラー発生時を除き、当該チャネル接続解除について特定のレスポンスは存在しません。

接続

リクエスト例:

83,Un1q31d3nt1f13r

レスポンス例:

レスポンスは当該 X-Id について、SmartREST 経由で登録された応答テンプレートによって設定されます。リアルタイム経由で受信した通知はすべて利用可能なテンプレートと併せて構文解析され、合致するすべてのテンプレートが、接続リクエストに対するレスポンスとして返されます。

接続維持:

Things Cloud プラットフォームは 10 分おきに接続断を検出するために、開いているロングポーリング接続経由でスペース文字を送信します。したがって、長時間にわたり開いたままの接続に対するレスポンスには、最初の行の先頭にスペース文字を含んでいる可能性があります。

接続解除

リクエスト例:

84,Un1q31d3nt1f13r

レスポンス例:

エラー発生時を除き、当該接続解除について特定のレスポンスは存在しません。

アドバイス応答

bayeux プロトコルは、接続のタイムアウト、接続リクエスト間隔、および接続レスポンスのフォローアップのポリシーに対する推奨設定をクライアントに伝えるための特別なフラグメントを有しています。このアドバイスは SmartREST 経由でも、レスポンス内で個別の行として伝達されます。また、上述のリクエストのどのレスポンスにも付加することができます。

レスポンス形式:

86,<timeout>,<interval>,<reconnect policy>

タイムアウト(timeout)および間隔(interval)は、時間をミリ秒単位で定義します。再接続ポリシー(reconnect policy)値は、次の 3 つのいずれかになります。

  • none: 接続からのレスポンス後に再接続しません
  • retry: 接続からのレスポンス後に再接続します
  • handshake: 新たなハンドシェイクから開始します(例:clientId が無効である場合、サーバーがセッションを閉じた場合)

アドバイス応答行は、すべての値を埋める必要はありません。

例:

86,,10000,retry

複数のテンプレートを伴うチャネル接続

デバイスが複数のテンプレートを使用する場合(例:子デバイスが親デバイスと異なるテンプレートを有する場合)、これらのテンプレートをチャネル接続リクエストに加えることができます。その場合、サーバーはすべてのテンプレート(ヘッダーおよびチャネル接続ステートメントから)を使用してレスポンスの構文解析を行います。

リクエスト例:

POST /notification/operations HTTP/1.0
Authorization: Basic ...
X-Id: mytemplate1

81,Un1q31d3nt1f13r,/mychannel,mytemplate2,mytemplate3

複数のテンプレートを使用する場合、レスポンスには行の構文解析にテンプレートを示す付加的な行を含みます。

87,{解析行数},{後続行の解析に使用する X-Id}

レスポンス例:

HTTP/1.0 200 OK

87,2,mytemplate1
100,myvalue
101,myvalue2
87,1,mytemplate3
100,myvalue3