기본 콘텐츠로 건너뛰기

라벨이 websocket인 게시물 표시

세상 간단한 https(+secured websocket): Caddy

nginx, apache2 같은 걸로 매번 certbot 연동을 통해 https 하는게 지겨워서 알아보니 Caddy라는게 있더라. 설치법은 강하게 크기 위해 알아서 해본다. # cat /etc/caddy/Caddyfile your.shitty.site:8123 {   proxy / localhost:9123 {     websocket     transparent   } } 이건 외부에서 8123으로 들어오는 걸 내부적으로 9123로 맞춰서 https 맞춰주는 reverse proxy. 만일 port를 생략하면 # cat /etc/caddy/Caddyfile your.shitty.site {   proxy / localhost:9123 {     websocket     transparent   } } 기본포트인 443으로 되어 https://your.shitty.site 로 접속이 된다. 요새 말썽이던 cloudflare 버리고 netlify domain이랑 caddy를 쓰니까 앓던 이가 빠진 느낌. 이 조합은 당분간 계속 써야겠다 싶다.

socketcluster 를 써보았다. 아주 좋았다.

일단 worker.js에   scServer.on('connection', function (client) {     console.log(`${client.id} is connected`);   }); 그리고 client쪽은 var socket = socketCluster.connect(); socket.on('error', function (err) {   throw 'Socket error - ' + err; }); socket.on('connect', function () {   console.log('CONNECTED'); }); 이쯤에서 시작해보자. 클라이언트가 시작하면 서버쪽에선 client.id 가 발급되는 것을 볼 수 있다. QVmNv2hblXhynoXOAAAE is connected 아마 이런 식으로 응답할 것이다. DDP처럼 RPC 와 Pub/Sub을 해보자. 먼저 단순 호출+응답 형태를 구현해보자. 서버는 socket.on('connect', ...); 가 다음에 이렇게      socket.on('message.send', function (data) {       console.log(data);     }); 클라이언트에선 그저 크롬 창 열고 socket.emit('message.send', { message: 'PING' }); 해보자. 서버쪽에서 PING 찍히면 오케이. 이 메시지를 Pub/Sub으로 해보자. 서버쪽 구현을 변경하자.     socket.on('message.send', function (data) {       console.log('message.send', data);       scServer.exchange.pub...