メインコンテンツまでスキップ

WebSocket クライアント

外部 streaming サーバー (ws / wss) の endpoint に対してゲートウェイが クライアントとして outbound 接続 し、 push されるメッセージをリアルタイムで受信するモードです。

状況どのモードを使うか
外部 IT システムが REST POST で値を送信してくる場合HTTP プッシュ
外部 streaming サーバーが WebSocket で値を流してくる場合WebSocket クライアント (このページ)
社内 PLC の値を直接読み取る場合Modbus / OPC-UA など

登録フォームの入力値

入力欄何を入力するか
IP アドレスWebSocket サーバーのホスト192.168.10.99, stream.example.com
ポートWebSocket サーバーのポート (ws=80, wss=443 が標準)8765, 443
PATHendpoint のパス (既定 /)/stream/v1
TLSwss を使用するかどうかfalse (ws) / true (wss)
SUBSCRIBE MESSAGE接続直後に一度だけ送信するメッセージ (オプション){"op":"subscribe","topic":"line1.tempC"}
収集周期キャッシュされた値をゲートウェイが読み取る周期 (ms)1000

実際の接続 URL: <scheme>://<host>:<port><PATH> (例: ws://192.168.10.99:8765/stream/v1)


タグの PLC アドレス表記 — 4-mode JSON

サーバーが送信するメッセージが JSON の場合、MQTT / Apache Kafka と同じ 4-mode デコーダで値を抽出します。

サーバーが次のように push するとします:

{"tempC": 25.7, "humid": 40.2, "running": true, "meta":{"unit":"degC"}}
モードタグの PLC アドレス取得される値
KEY (top-level)tempC25.7
KEYhumid40.2
KEYrunningtrue
PATH (JSON Pointer):$.meta.unitdegC
RAW_raw_ または :_raw_ (または空欄)メッセージ全体
SCALAR(メッセージが JSON でない場合) _raw_メッセージそのまま

WebSocket は単一チャネルなので topic 部分がありません — : の前半を空にするか、そのまま key のみを記述すればよいです。

JSON でない場合や、メッセージ全体をそのまま受け取りたい場合は _raw_ または空欄を使用します。


よく使われるケース

ケース方法
クラウド streaming broker (リアルタイム相場、為替、天気など)サーバーが push する JSON キーをそのままタグに登録
ROS 2 / rosbridge_serverrosbridge の WebSocket に接続 → topic メッセージを受信
社内独自の streaming ゲートウェイ通常は平文 ws 8080 / 8765 — tls=false
外部セキュア SaaS (証明書が必要)wss 443 — tls=true
サーバーが subscribe ハンドシェイクを要求するSUBSCRIBE MESSAGE に取り決めた payload を入力

よくある問題と対処

症状原因対処
値が入ってこないサーバーがメッセージを push していないwscat -c ws://<host>:<port><path> で直接受信し、コンソールに行が出力されるか確認
値が入ってこないsubscribe メッセージ未設定 (サーバーが要求している場合)サーバーのマニュアルを確認し SUBSCRIBE MESSAGE を登録
[WS] connect 실패: timeoutファイアウォール / ポート / DNSポートが閉じていないか、telnet / nc で TCP 接続が可能か確認
[WS] connect 실패: handshakepath / TLS 設定の誤りURL <scheme>://<host>:<port><path> を直接検証
TLS 証明書エラー自己署名 (self-signed)本番では正式な証明書の使用を推奨。暫定対応時はシステム管理者に cacerts への追加を依頼
JSON キーごとの値が空になるメッセージ形式が JSON でないまず _raw_ で受信して形式を確認

さらに詳しい技術ドキュメント