A simple JavaScript library to create, parse and manage JSON-RPC 2.0 calls. This library may be particularly useful to use the JSON-RPC specification inconjunction with something like Socket.io.
For the JSON-RPC 2.0 specification, see: http://www.jsonrpc.org/specification
Pseudo code example for a JSON-RPC request:
// Client: var request = new JSON_RPC.Request(method, params); var id = request.id; request.toString(); // send to server // Server: var request = JSON_RPC.parse(request); request.response = request.method(); // if successful request.toString(); // return to client // Back on Client: var request = JSON_RPC.parse(request); if (request.id == id) { // the request ID is maintained var response = request.response; // if successful }
Notifications are handled similarly but without support for IDs or a response/error:
// Client: var request = new JSON_RPC.Notification(method, params); request.toString(); // send to server // Server: var request = JSON_RPC.parse(request); if (request.constructor === JSON_RPC.Notification) { // DO NOT reply to a Notification request.method(); }
Error handling for requests (not notifications) are handled like this:
// Server: var request = JSON_RPC.parse(request); if (request.error) request.toString(); // parse error, return to client var response = request.method(); if (!reponse) { // hypothetical error scenario request.error = new JSON_RPC.Error(-1, "An error occurred"); } else { request.response = response; } request.toString(); // return to client
The JSON_RPC object also contains pre-rolled errors:
JSON_RPC.PARSE_ERROR JSON_RPC.INVALID_REQUEST JSON_RPC.METHOD_NOT_FOUND JSON_RPC.INVALID_PARAMS JSON_RPC.INTERNAL_ERROR