[javascript] 프로미스를 활용한 웹 소켓 통신

웹 소켓은 실시간 양방향 통신을 제공하는 프로토콜입니다. 웹 소켓은 웹 애플리케이션에서 실시간 업데이트, 채팅, 게임 등 다양한 실시간 기능을 구현하는 데 사용됩니다. 프로미스는 자바스크립트에서 비동기 작업을 처리하기 위한 패턴으로 많이 사용됩니다. 이번 글에서는 프로미스를 활용하여 웹 소켓 통신을 구현하는 방법에 대해 알아보겠습니다.

웹 소켓 연결

먼저, 웹 소켓을 사용하기 위해 WebSocket 객체를 생성하고 원하는 서버의 URL을 전달하여 웹 소켓 연결을 생성합니다.

const socket = new WebSocket('ws://example.com');

이벤트 핸들링

웹 소켓은 여러 가지 이벤트를 발생시켜 상태 변화를 알립니다. onopen, onmessage, onclose, onerror 등의 이벤트 핸들러를 등록하여 원하는 로직을 처리할 수 있습니다.

socket.onopen = () => {
  console.log('웹 소켓 연결이 열림');
};

socket.onmessage = (event) => {
  console.log('메시지 수신:', event.data);
};

socket.onclose = () => {
  console.log('웹 소켓 연결이 닫힘');
};

socket.onerror = (error) => {
  console.log('에러 발생:', error);
};

메시지 전송

send 메소드를 사용하여 웹 소켓 서버로 메시지를 전송할 수 있습니다.

socket.send('Hello, WebSocket!');

프로미스 활용

프로미스를 사용하여 웹 소켓 연결, 메시지 전송, 메시지 수신 등의 작업을 보다 간편하게 처리할 수 있습니다. 예를 들어, 아래의 코드는 웹 소켓 연결을 프로미스로 래핑한 예제입니다.

function connectWebSocket(url) {
  return new Promise((resolve, reject) => {
    const socket = new WebSocket(url);

    socket.onopen = () => {
      resolve(socket);
    };

    socket.onerror = (error) => {
      reject(error);
    };
  });
}

// 사용 예시
connectWebSocket('ws://example.com')
  .then((socket) => {
    console.log('웹 소켓 연결 성공');
    socket.send('Hello, WebSocket!');
  })
  .catch((error) => {
    console.log('웹 소켓 연결 실패:', error);
  });

결론

프로미스를 활용하여 웹 소켓을 보다 쉽게 다룰 수 있습니다. 프로미스를 사용하면 비동기 작업을 더 직관적이고 선언적으로 다룰 수 있으며, 코드의 가독성을 높일 수 있습니다. 웹 소켓을 사용하여 실시간 통신을 구현할 때, 프로미스를 활용해보세요.