第436回 SORACOM公式ブログ

ソラコム公式ブログ

IoT で WebSocket をもっと便利で安全に使う SORACOM Beam 新機能のご紹介

  • この記事をはてなブックマークに追加
  • 本文印刷

 本記事はソラコムが提供する「SORACOM公式ブログ」に掲載された「IoT で WebSocket をもっと便利で安全に使う SORACOM Beam 新機能のご紹介」を再編集したものです。

2024 年 7 月 17 日開催の SORACOM Discovery 2024 に先駆けて、SORACOM Beam (以下 Beam) では WebSocket のサポートを 7 月 1 日よりリリースしていました。このブログでは、この Beam WebSocket の機能を解説します。Discovery 2024 の基調講演で発表されたサービスと同様に、皆さんに使っていただけると嬉しいです。

WebSocket についておさらい

WebSocket は、クライアントとサーバとの間での双方向通信を可能にする通信プロトコルです。低遅延な通信が求められるアプリケーションに適しており、例えば Web でのチャット、リアルタイムの通知、オンラインゲームなどで使われています。もし WebSocket 誕生の背景に興味があれば、Microsoft の解説が分かりやすくておすすめです 👍

WebSocket の紹介

IoTにおけるWebSocketの利用例

IoT における WebSocket の利用例として、EV 充電器で採用される OCPP が挙げられます。OCPP (Open Charge Point Protocol) は、EV 充電器と充電器管理システム間の通信プロトコルの標準で、通信に WebSocket を使用します。

OCPP-2.0.1_edition3_part2_specification.pdf より。CSMS は、Charging Station Management System (充電器管理システム の略

最新の OCPP 2.0.1 に定義のある 3 つの Security Profile のうちの 1 つで TLS の使用が [強く推奨] とされています。一方で、過去から OCPP を利用している EV 充電器の中には、非 TLS での WebSocket 通信を行っているケースもあります。

データ転送サービス「SORACOM Beam」がWebSocketに対応

7 月 1 日のリリースで、SORACOM Beam は WebSocket 通信の転送に対応しました。SORACOM Beam は、IoT デバイスから SORACOM に送信されたデータを、任意のサーバーに転送するサービスです。Beam はこれまでデバイスからの UDP、TCP、HTTP 通信などの転送に対応しており、ここに WebSocket 通信の転送が追加された形です。

Beam と転送先との間の通信は Beam が暗号化するため、デバイス側で暗号化処理をしなくても安全な通信が可能です。これは今回の WebSocket 転送機能に限らない Beam の強みの 1 つです。デバイスと Beam 、Beam と転送先の間にそれぞれコネクションを確立し、それらを連結することでデバイスと転送先の間で WebSocket の通信を実現しています。

Beam は WebSocket を転送する際、通信経路を暗号化します

先の OCPP の例で言うならば、TLS 未実装の EV 充電器で Beam の WebSocket 転送機能を利用することで、Beam が代わりに通信を暗号化して EV 充電器システムのセキュリティを向上できます。既存のシステムに SORACOM IoT SIM を追加して、システムをアップグレードできるのです。

さっそく使ってみよう

Beam の WebSocket 転送機能はとても簡単にお試しいただけます。WebSocket 接続を受け付けるサーバーをお客様自身で準備しなくても、Beam 用にソラコムが提供しているテストサーバー (beamtest.soracom.io) を WebSocket 通信の転送先として利用できます。設定方法については Users サイト HTTPS テストサーバーと WebSocket で通信する をご覧ください。

ご注意いただきたい点は、[Web サイト エントリポイント] の設定を作成することです。Beam には複数のエントリポイントがありますが、WebSocket 転送をサポートするのは [Web サイトエントリポイント] だけです。

beamtest を使って Beam の WebSocket 転送を試す設定の例

Beam 用テストサーバーとの WebSocket 接続が確立すると、WebSocket のリアルタイムな双方向通信を手元で実感できます。SORACOM IoT SIM を挿入したデバイスから打ち出したメッセージが、テストサーバーからオウム返しされる様子をぜひ体験してみてください。以下は WebSocket の CLI ツール wscat を使用した、Beam の WebSocket 転送の例です。

注意事項

WebSocket の利用による追加の料金は発生せず、従来の Beam の料金体系と同じです。デバイス ↔ Beam 間の WebSocket コネクションの確立と、Beam ↔ 転送先間の WebSocket コネクションの確立にそれぞれ 1 リクエストが発生します。詳細はサービスページをご覧ください。

ポイントは、WebSocket 確立後のメッセージはリクエスト数に含まれない点です。デバイス ↔ 転送先の間の WebSocket が疎通した後は、Beam を介したメッセージングに料金は発生しません。その意味で Beam の TCP → TCP/TCPS エントリポイントの料金体系と似ています。 なお、SORACOM Air や Arc の通信料金は別途発生します。

Beam の WebSocket 接続では、300 秒間の無通信が続くと TCP Socket がタイムアウトします。また SORACOM のメンテナンスの影響で TCP コネクションが切断される場合があります。そのため、必要であれば再接続などの実装をお勧めします。その他、詳しい説明は Users ドキュメントをご参照ください。

最後に

実はこの WebSocket 転送機能の開発は EV 充電器業界の方からのご相談から始まったものでした。既存システムの改善に SORACOM のバイ・デザインのセキュリティを役立てていただける事例であり、ソラコムの開発ポリシー「Working backwards from the customer (お客様の声から逆算して考える)」を文字通りに体現したものでもありました。

幅広い皆様の IoT プロジェクトを少しでも後押しできれば幸いです。ぜひ、Beam の WebSocket 転送をお試しください!

― ソラコム 小林 (tau)

投稿 IoT で WebSocket をもっと便利で安全に使う SORACOM Beam 新機能のご紹介SORACOM公式ブログ に最初に表示されました。

過去記事アーカイブ

2024年
01月
02月
03月
04月
05月
06月
07月
08月
2023年
01月
02月
03月
04月
05月
06月
07月
08月
09月
10月
11月
12月
2022年
01月
02月
03月
04月
05月
06月
07月
08月
09月
10月
11月
12月
2021年
01月
02月
03月
04月
05月
06月
07月
08月
09月
10月
11月
12月