본문으로 건너뛰기

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방화벽 / 포트 / DNSport 막힘 여부, telnet / nc 로 TCP 연결 가능한지 확인
[WS] connect 실패: handshakepath / TLS 설정 오류URL <scheme>://<host>:<port><path> 직접 검증
TLS 인증서 오류자체서명 (self-signed)운영에서는 정식 인증서 사용 권장. 임시 시 시스템 관리자에게 cacerts 추가 요청
JSON 키별 값이 비어있음메시지 형식이 JSON 이 아님일단 _raw_ 로 받아본 뒤 형식 확인

더 자세한 기술 문서