Doit! - JSON-RPC 서버 만들기
Last updated
Last updated
**RPC(Remote Procedure Call)**는 서버에 데이터를 요청해 응답받는 과정을 라이브러리에서 자동으로 처리한다. 단순히 로컬단말에서 함수를 호출하는 것처럼 코드를 만들기만 해도 클라이언트와 서버 간에 데이터를 주고받는 기능이 동작한다.
JSON-RPC는 JSON포맷으로 데이터를 주고받을 수 있어 자바스크립트를 사용하는 노드 프로그램에서 훨씬 자연스럽게 사용할 수 있다.
서버와 데이터를 주고받는 기능은 RPC가 담당하기 때문에 개발자는 클라이언트에서 일반 함수를 사용하듯 서버에 데이터를 요청하기만 하면된다.
라이브러리에서는 STUP을 통해 서버로 요청을 보낸다. 필요한 데이터를 주고받을 때 사용하는 데이터 포맷은 XML,바이너리 포맷등이 있다.
JSON-RPC 공식 사이트 JSON-RPC Wiki 사이트
JSON-RPC는 어떤 OS와 언어를 사용하든 서로 데이터를 주고 받을 수 있도록 다양한 언어로 작성된 라이브러리가 있다. 여기서는 jayson모듈을 사용한다.
웹 서버로 요청하는 패스 중 한 가지 패스를 JSON-RPC로 실행하도록 만들 수 있다. 이러한 함수들을 보통 **Handler(핸들러)**라고 부른다.
file은 핸들러 모듈 파일의 이름이고 method는 등록한 핸들러의 이름이다.
echo핸들러는 클라이언트에서 보낸 데이터를 그대로 클라이언트로 다시 보내 주는 단순한 기능을 하는 함수이다.
첫번째 파라미터는 클라이언트로부터 전달받은 것이며 배열 객체로 되어있다. 두번째 파라미터는 함수로 클라이언트한테 응답을 보낼 때 사용한다. 클라이언트에서 보내 온 데이터를 그대로 다시 보낼 것이므로 **callback() **함수를 호출하면서 params객체를 그대로 넣어준다.
$.jsonRPC.request()
속성id
요청 ID를 지정할 수 있다. 이 요청 ID는 서버로부터 받는 응답을 구별하는데 사용한다.
params
서버로 보낼 데이터를 넣는 배열 객체
success
응답을 성공적으로 받았을 때 호출되는 콜백 함수
error
오류 응답을 받았을 때 호출되는 콜백 함수
id
요청할 때 전달한 id 값이 들어 있다.
jsonrpc
JSON-RPC 스펙의 버전을 표기한다.
result
응답 데이터가 배열 객체로 들어있다.
RPC와 기존 방식의 가장 큰 차이점은 서버에서 응답 받는 것이 웹 문서가 아니라 데이터라는 것이다.
이 함수에서는 클라이언트에서 보내 온 데이터를 확인한다.