Soracom

Users

ドキュメント

TCP → HTTP/HTTPS エントリポイント

TCP で受信したデータを、JSON 形式に変換して 1 つのリクエストとして HTTP または HTTPS に POST します。受け取ったデータはバイナリである可能性もあるため、Base64 エンコードされて下記のような形式で POST されます。

{
  "payload": "Base64 エンコードされたデータ"
}
送信可能なデータサイズには制限があります

TCP → HTTP/HTTPS エントリポイントでデータを送信する場合、データサイズが MTU (Maximum Transmission Unit。一般的には 1500 バイト) を超えると、複数のデータ (TCP セグメント) に分割されて、転送先サーバーに送信されます。MTU を超えるデータを送信する場合は、UDP → HTTP/HTTPS エントリポイント の利用も検討してください。

設定項目

SORACOM ユーザーコンソールの場合

項目説明
[設定名]

任意の名前を入力します。

同じ名前の設定を追加できます
[設定名] は、エントリポイントの一意のキーとして扱われません。ほかのエントリポイントと同じ名前を設定できます。
[有効]この設定の有効 / 無効を切り替えます。
[転送先]

エントリポイントで受け付けたリクエストの転送先を設定します。

項目説明
[プロトコル]転送する際のプロトコルを選択します。
[ホスト名]転送先の FQDN (Fully Qualified Domain Name) を入力します。例: beamtest.soracom.io
[ポート番号]転送先のポート番号を入力します。例: 1234
[パス]転送先のパスを入力します。例: /to/
[ヘッダ操作]転送先へのリクエストに追加するヘッダーを設定します。詳しくは、HTTP エントリポイントの [ヘッダ操作] を参照してください。
[レスポンス]
項目説明
[ステータスコードを省略]レスポンスに HTTP のステータスコードを含まないようにします。詳しくは、レスポンスのステータスコードを省略する を参照してください。
[データ終端バイト列]レスポンスの末尾に、終端を識別するためのバイト列を付与します。デフォルトでは改行コード 0a が付与されます。詳しくは、レスポンスのデータ終端バイト列を設定する を参照してください。

SORACOM CLI / SORACOM API の場合

soracom groups put-config (Group:putConfigurationParameters API) を使用します。

{namespace} は、SoracomBeam です。

ボディで指定するプロパティについては、以下の keyvalue のペアを配列で指定します。

"tcp://beam.soracom.io:23080": { // 固定
  "name": "string", // 任意
  "destination": "tcps://secure.example.com:1234", // 通信先のホスト名&ポートを指定
  "enabled": true | false, // TCP → HTTP/HTTPS エントリポイントの有効・無効
  "addSimIdHeader": true | false, // 通信開始時に SIM ID を送るか否か
  "addEquipmentHeader": true | false, // 通信開始時に IMEI を送るか否か
  "addMsisdnHeader": true | false, // 通信開始時に MSISDN を送るか否か
  "addSubscriberHeader": true | false, // 通信開始時に IMSI を送るか否か
  "addSignature": true | false, // 検証用のシグネチャを付与するか否か
  "psk": "string", // 検証用シグネチャを計算する際の事前共有パスフレーズ
  "customHeaders": { // 独自HTTPヘッダ
    "X-HEADER-NAME": { // 独自ヘッダの名前
      "action": "append" // 追記のみ可能
      "headerKey": "X-HEADER-NAME",
      "headerValue": "VALUE" // ヘッダに設定する内容
    }
  },
  "skipStatusCode": true | false, //
  "eodBytes": "0a" // データ終端バイト列
}

設定例

[
  {
    "key": "tcp://beam.soracom.io:23080",
    "value": {
      "name": "telnet2https",
      "destination": "https://beamtest.soracom.io/",
      "enabled": true,
      "addSimIdHeader": false,
      "addEquipmentHeader": false,
      "addMsisdnHeader": false,
      "addSubscriberHeader": true,
      "addSignature": true,
      "psk": "topsecret",
      "customHeaders": {
        "X-GROUP-NAME": {
          "action": "append",
          "headerKey": "X-GROUP-NAME",
          "headerValue": "TEST"
        }
      },
      "skipStatusCode": true,
      "eodBytes": ""
    }
  }
]

エントリポイント

beam.soracom.io:23080

リクエスト

Beam は送信されたメッセージを Base64 エンコードしたうえで以下のような JSON にし、HTTP POST リクエストのボディに設定します。

{
  "payload": "Base64 エンコードされたデータ"
}

TCP 上で送信されたデータをクラウドサービスに送信します。なお、HTTP ヘッダの user_agent には"SORACOM Beam"という文字列が設定されます。

レスポンス

TCP には HTTP のようなリクエスト&レスポンスの概念はありませんので、以下のコードやメッセージをペイロードとして含んだ TCP パケットが、TCP → HTTP/HTTPS エントリポイントからデバイスにレスポンスされます。フォーマットは以下のとおりです。レスポンス送信のタイミングは、転送先サーバーからのレスポンスに基づきます。

${HTTP ステータスコード} ${転送先サーバーから返された HTTP レスポンスのボディ}${[データ終端バイト列] に指定したバイト列}

${HTTP ステータスコード} (半角スペースを含む) と、${[データ終端バイト列] に指定したバイト列} は省略できます。詳しくは、以下のページを参照してください。

実際の利用例

TCP → HTTP/HTTPS エントリポイントとの TCP セッションを確立して、データを送信します。

$ nc -v beam.soracom.io 23080
Connection to beam.soracom.io (100.127.127.100) 23080 port [tcp/*] succeeded!
Test data # 送信するデータを入力して、Enter キーを押します。

転送先サーバーから、HTTP ステータスコードが 200 で、ボディがない HTTP レスポンスが返された場合の表示例:

200

転送先サーバーから、HTTP ステータスコードが 400 で、ボディ (Message from server) がある HTTP レスポンスが返された場合の表示例:

400 Message from server\n

転送先サーバーから、HTTP ステータスコードが 400 で、ボディ (Message from server) がある HTTP レスポンスが返され、[データ終端バイト列] が空欄だった場合の表示例:

400 Message from server

TCP → HTTP/HTTPS エントリポイントに関する制限事項と注意事項

HTTP(S) に変換時に TCP で送信したデータが分割されることがあります。大きなデータを送信する場合は、HTTP エントリポイントの利用をご検討ください。