에이전트 소켓 (WSS)
GET
/api/v1/relay/socket
const url = 'https://dev.api.endueos.com/api/v1/relay/socket';const options = {method: 'GET', headers: {upgrade: 'websocket'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://dev.api.endueos.com/api/v1/relay/socket \ --header 'upgrade: websocket'에이전트가 접속하는 WebSocket. 사용자 인증이 아니라 연결 토큰으로 인증한다.
프레임 규약은 protocol/README.md.
토큰은 Sec-WebSocket-Protocol: endue-os.v1, endue-os.token.{토큰} 으로 보낸다 (와이어 프로토콜 v1.2). 101 은 endue-os.v1 을 고른다.
v1·v1.1 에이전트의 ?token= 도 받는다 — 둘 다 있으면 헤더가 이긴다.
토큰을 Upgrade 보다 먼저 확인한다: Upgrade 없이 오면 토큰이 맞을 때 426, 틀릴 때 401 이다 (브라우저 에이전트가 거절 이유를 아는 길 —
이때는 Authorization: Bearer 로 보낸다. fetch 는 Sec-* 헤더를 붙일 수 없다).
가이드 — 내 에이전트 붙이기
- None
파라미터
섹션 제목: “파라미터”쿼리 파라미터
섹션 제목: “쿼리 파라미터”token
string
V1·v1.1 만. URL 은 로그에 남는다 — v1.2 에이전트는 쓰지 않는다.
헤더 파라미터
섹션 제목: “헤더 파라미터”Sec-WebSocket-Protocol
string
endue-os.v1, endue-os.token.{연결 토큰} (v1.2).
upgrade
string
101
섹션 제목: “101”WebSocket 으로 바뀐다.
응답 헤더
섹션 제목: “응답 헤더”Sec-WebSocket-Protocol
string
endue-os.v1 — 요청에 있었을 때만.
401
섹션 제목: “401”인증이 없거나 무효다 — UNAUTHORIZED. 본문은 오류 봉투.
426
섹션 제목: “426”Upgrade: websocket 이 없다. 본문은 오류 봉투.
503
섹션 제목: “503”의존 서비스에 닿지 못했다 — 잠시 뒤 다시. 본문은 오류 봉투.