자바스크립트에서 JSON-RPC 클라이언트를 작성하는 방법

JSON-RPC는 원격 프로시저 호출(Remote Procedure Call, RPC) 프로토콜의 한 형식으로, 클라이언트가 서버에게 요청을 보내고, 서버는 요청을 처리한 후 결과를 클라이언트에게 반환하는 방식을 사용합니다. 자바스크립트에서는 이러한 JSON-RPC 프로토콜을 사용하여 서버와 통신하는 클라이언트를 작성할 수 있습니다.

1. XMLHttpRequest를 이용한 방법

가장 기본적인 방법으로는 XMLHttpRequest 객체를 이용하여 JSON-RPC 요청을 보내고, 응답을 처리하는 방법입니다. 아래는 이 방법의 예제 코드입니다.

function sendJsonRpcRequest(url, method, params, onSuccess, onError) {
  var xhr = new XMLHttpRequest();
  xhr.open("POST", url, true);
  xhr.setRequestHeader("Content-Type", "application/json");
  xhr.onreadystatechange = function() {
    if (xhr.readyState === XMLHttpRequest.DONE) {
      if (xhr.status === 200) {
        var response = JSON.parse(xhr.responseText);
        if (response.error) {
          onError(response.error);
        } else {
          onSuccess(response.result);
        }
      } else {
        onError("HTTP " + xhr.status + " " + xhr.statusText);
      }
    }
  };
  var requestBody = JSON.stringify({
    jsonrpc: "2.0",
    method: method,
    params: params,
    id: 1
  });
  xhr.send(requestBody);
}

위의 예제 코드에서는 sendJsonRpcRequest 함수를 호출하여 JSON-RPC 요청을 보낼 수 있습니다. 함수에는 다음과 같은 파라미터가 있습니다.

2. 라이브러리 사용하기

XMLHttpRequest를 직접 다루는 것보다 편리하게 JSON-RPC 클라이언트를 작성할 수 있는 라이브러리도 있습니다. 이러한 라이브러리를 사용하면 간편하게 JSON-RPC 요청을 보낼 수 있습니다.

예를 들어, json-rpc-client라는 라이브러리를 사용한다면 아래와 같이 코드를 작성할 수 있습니다.

const jsonRpc = require("json-rpc-client");

const client = jsonRpc("http://example.com/rpc");

client.request("add", [2, 3])
  .then(result => {
    console.log("Result:", result);
  })
  .catch(error => {
    console.error("Error:", error);
  });

위의 예제 코드에서는 json-rpc-client 모듈을 사용하여 JSON-RPC 클라이언트를 생성한 후, request 메소드를 호출하여 요청을 보내고, 응답을 처리합니다. 이러한 라이브러리는 보다 간결한 코드 작성을 가능하게 해줍니다.

마무리

이렇게 자바스크립트에서 JSON-RPC 클라이언트를 작성하는 방법을 알아보았습니다. XMLHttpRequest를 직접 다루거나, 라이브러리를 사용하여 보다 효율적인 클라이언트를 작성할 수 있습니다. JSON-RPC는 웹 개발에서 많이 사용되는 프로토콜이므로, 이러한 클라이언트 작성 방법을 익혀두면 유용하게 활용할 수 있을 것입니다.