[javascript] 이벤트 루프와 자바스크립트의 웹 소켓 통신 방식

이번 포스트에서는 이벤트 루프웹 소켓을 사용한 효율적인 통신 방식에 대해 알아보겠습니다.

이벤트 루프

자바스크립트는 단일 스레드 언어이기 때문에 이벤트를 비동기적으로 처리해야 합니다. 여러 이벤트가 발생했을 때 이벤트 루프는 이벤트를 순서대로 실행하고, 이벤트 처리가 끝나면 클라이언트로부터 새로운 이벤트를 대기합니다.

이벤트 루프는 실행 스택, 메시지 큐, 백그라운드 및 태스크 큐로 구성됩니다. 실행 스택은 현재 실행 중인 함수의 컨텍스트를 담고 있으며, 메시지 큐는 실행할 콜백 함수를 담고, 백그라운드에서 비동기적으로 실행되는 태스크들을 담습니다.

웹 소켓 통신 방식

웹 소켓은 양방향 통신을 지원하는 프로토콜로, 서버와 클라이언트 간 실시간 데이터를 주고받을 수 있습니다. 이를 통해 실시간 채팅 애플리케이션 등을 개발할 때 매우 유용합니다.

웹 소켓은 HTTP와 달리 지속적인 연결을 제공하며, 이벤트 루프를 통해 비동기적으로 데이터를 주고 받을 수 있습니다.

아래는 웹 소켓을 이용한 기본적인 클라이언트-서버 통신의 예시 코드입니다.

// 웹 소켓 서버
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', function connection(ws) {
  ws.on('message', function incoming(message) {
    console.log('received: %s', message);
  });

  ws.send('something');
});

// 웹 소켓 클라이언트
const ws = new WebSocket('ws://localhost:8080');

ws.on('open', function open() {
  ws.send('something');
});

ws.on('message', function incoming(data) {
  console.log(data);
});

이제 이벤트 루프와 웹 소켓을 이용한 효율적인 통신 방식에 대해 이해하셨을 것입니다.

더 자세한 내용은 MDN 웹 문서를 참고하세요.