자바스크립트에서 JSON-RPC 서버를 구축하는 방법

JSON-RPC는 웹 애플리케이션에서 클라이언트와 서버 간의 통신을 위한 경량 프로토콜입니다. 이 프로토콜을 사용하면 클라이언트가 원격 서버에 요청을 보내고, 서버가 응답을 반환하는 방식으로 작동합니다. 이번 글에서는 자바스크립트를 사용하여 JSON-RPC 서버를 구축하는 방법에 대해 알아보겠습니다.

1. JSON-RPC 패키지 설치하기

먼저, JSON-RPC 서버를 구축하기 위해 json-rpc-2.0 패키지를 설치해야 합니다. 이 패키지는 자바스크립트에서 JSON-RPC 프로토콜을 구현할 수 있는 도구를 제공합니다.

npm install json-rpc-2.0

2. JSON-RPC 서버 생성하기

다음으로, JSON-RPC 서버를 생성하는 코드를 작성해보겠습니다. 아래는 서버를 생성하고 요청에 따라 간단한 계산을 수행하는 예제입니다.

const rpc = require('json-rpc-2.0');

// JSON-RPC 메서드 정의
const methods = {
  add: (params) => {
    const result = params.reduce((acc, val) => acc + val, 0);
    return result;
  },
  multiply: (params) => {
    const result = params.reduce((acc, val) => acc * val, 1);
    return result;
  }
};

// JSON-RPC 서버 생성
const server = new rpc.Server();

// 메서드 등록
server.addMethods(methods);

// HTTP 서버 생성
const httpServer = http.createServer((req, res) => {
  // 요청 처리
  server.receive(req, res);
});

// 서버 시작
httpServer.listen(3000, () => {
  console.log('JSON-RPC server is running on port 3000');
});

위의 코드에서 add 메서드는 인자로 받은 숫자들을 더한 값을 반환하고, multiply 메서드는 인자로 받은 숫자들을 곱한 값을 반환합니다.

3. 클라이언트 요청 처리하기

다음으로, 클라이언트 요청을 처리하는 방법을 알아보겠습니다. 클라이언트는 JSON-RPC 요청을 보내고, 서버는 해당 요청에 대한 응답을 반환합니다.

const rpc = require('json-rpc-2.0');

// 요청을 보낼 클라이언트
const client = new rpc.Client('http://localhost:3000');

// add 메서드 호출
client.call('add', [1, 2, 3], (err, result) => {
  if (err) {
    console.error(err);
  } else {
    console.log(result); // 6
  }
});

// multiply 메서드 호출
client.call('multiply', [2, 3, 4], (err, result) => {
  if (err) {
    console.error(err);
  } else {
    console.log(result); // 24
  }
});

위의 코드는 서버에 addmultiply 메서드를 호출하는 예제입니다. client.call 메서드를 사용하여 요청을 보내고, 콜백 함수에서 반환된 결과를 처리할 수 있습니다.

이제 자바스크립트를 사용하여 간단한 JSON-RPC 서버를 구축하는 방법에 대해 알아보았습니다. 이를 응용하여 실제 웹 애플리케이션에서 데이터를 주고받을 수 있습니다. JSON-RPC는 간단하면서도 효율적인 통신 프로토콜이기 때문에 웹 개발에 유용하게 사용될 수 있습니다.