Developer · Hosting · WebSocket

WebSocket 사용법

모든 교육생 사이트에서 같은 주소의 /ws 경로로 실시간 양방향 연결을 사용할 수 있습니다. 계정마다 방이 분리되며, 브라우저 기본 WebSocket API만 있으면 됩니다.

주소

wss://{아이디}.zyo.kr/ws
wss://{아이디}.zyo.kr/ws/{방이름}
  • HTTPS 페이지에서는 반드시 wss:// 를 씁니다. (ws:// 는 브라우저가 차단합니다)
  • 경로 /ws 는 예약되어 있습니다. 같은 이름의 폴더·파일은 웹소켓 게이트웨이가 받습니다.
  • 메시지는 같은 계정 + 같은 방 안의 모든 연결에 그대로 전달됩니다. (자신 포함)
  • 다른 계정 사이트와는 섞이지 않습니다.

예제

JavaScript

const ws = new WebSocket(`wss://${location.host}/ws`);

ws.addEventListener('open', () => {
  ws.send('hello');
});

ws.addEventListener('message', (ev) => {
  console.log('받음', ev.data);
});

ws.addEventListener('close', () => {
  console.log('종료');
});

자신의 사이트(https://아이디.zyo.kr)에서 실행하면 location.host 가 곧 계정 주소입니다.

방이 있는 채팅

const room = 'chat';
const ws = new WebSocket(`wss://${location.host}/ws/${room}`);
ws.onopen = () => ws.send(JSON.stringify({ nick: '나', text: '안녕' }));
ws.onmessage = (ev) => console.log(ev.data);

상태 확인 (HTTP)

curl -sS https://아이디.zyo.kr/ws

업그레이드 없이 GET 하면 JSON 상태(ok, url, 방 접속 수)를 돌려줍니다.

  • 경로가 /ws 이면 방 이름은 default 입니다.
  • 방 이름은 영문·숫자·. _ - 만, 최대 64자입니다.
  • 프로토콜은 정해져 있지 않습니다. 문자열·JSON·바이너리 모두 그대로 중계합니다.

연결 시험

이 페이지는 포털 전용 방(wss://zyo.kr/ws/demo)으로 시험합니다. 교육생 사이트에서는 wss://아이디.zyo.kr/ws 를 쓰세요.

대기

        

한도 · 보안

  • 계정당 동시 연결 8개, 서버 전체 48개. 초과 시 연결이 거절됩니다.
  • 메시지 최대 32KB. 초당 약 20개 이상 보내면 연결이 닫힙니다.
  • 브라우저 Origin 이 해당 사이트 주소와 다를 경우 거절합니다. (다른 도메인에서 붙는 것 차단)
  • 교육용 중계입니다. 비밀번호·개인정보를 웹소켓으로 보내지 마세요. 서버에 메시지는 저장되지 않습니다.

호스팅 포털 홈