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 요청을 보낼 수 있습니다. 함수에는 다음과 같은 파라미터가 있습니다.
url
: JSON-RPC 서버의 URLmethod
: 요청할 메소드 이름params
: 메소드에 전달할 파라미터onSuccess
: 요청이 성공한 경우 호출될 콜백 함수onError
: 요청이 실패한 경우 호출될 콜백 함수
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는 웹 개발에서 많이 사용되는 프로토콜이므로, 이러한 클라이언트 작성 방법을 익혀두면 유용하게 활용할 수 있을 것입니다.