[javascript] 클라이언트-서버 통신

웹 애플리케이션에서 클라이언트와 서버 간의 통신은 매우 중요합니다. 이를 통해 사용자는 서버로 데이터를 보내거나 서버에서 데이터를 받아 화면에 표시할 수 있습니다. 다양한 방법으로 이러한 통신이 이루어지며, 이 글에서는 몇 가지 가장 널리 사용되는 방법에 대해 살펴보겠습니다.

AJAX (Asynchronous JavaScript and XML)

AJAX는 JavaScript를 사용하여 클라이언트와 서버 간에 비동기적으로 데이터를 교환하는 기술입니다. 주로 XML 대신 JSON 형식으로 데이터를 주고받는데, 이를 통해 페이지 전체를 새로고침하지 않고도 서버로부터 데이터를 동적으로 불러와 화면에 보여줄 수 있습니다.

아래는 AJAX를 사용한 클라이언트에서 서버로 데이터를 보내는 간단한 예시입니다.

function sendDataToServer() {
  var data = { key: 'value' };
  var xhr = new XMLHttpRequest();
  xhr.open('POST', '/api/data', true);
  xhr.setRequestHeader('Content-Type', 'application/json');
  xhr.send(JSON.stringify(data));
  xhr.onload = function() {
    if (xhr.status === 200) {
      console.log('Data sent successfully');
    } else {
      console.error('Failed to send data');
    }
  };
}

WebSocket

WebSocket은 실시간 양방향 통신을 제공하는 프로토콜로, 클라이언트와 서버 간에 지속적인 연결을 유지하면서 데이터를 주고받을 수 있습니다. 이를 통해 실시간 채팅, 주식 시세 업데이트 등의 기능을 구현할 수 있습니다.

아래는 WebSocket을 사용하여 클라이언트와 서버 간에 메시지를 주고받는 예시입니다.

var socket = new WebSocket('wss://example.com/socket');

socket.onopen = function() {
  console.log('Connection opened');
  socket.send('Hello, server');
};

socket.onmessage = function(event) {
  console.log('Received message from server:', event.data);
};

socket.onclose = function() {
  console.log('Connection closed');
};

이 외에도 HTTP Fetch API, Server-Sent Events 등의 다양한 방법으로 클라이언트와 서버 간 통신이 이루어질 수 있습니다. 선택한 방법은 애플리케이션의 요구사항과 성능 등을 고려하여 결정해야 합니다.

위의 예시들은 각각의 기술에 대한 기본적인 개념을 설명하고 있으며, 자세한 내용은 각 기술의 공식 문서 및 튜토리얼을 참고하시기 바랍니다.