Simple JSON Message Protocol (SJMP)
Attention it is a working draft specification and compatibility can be broken at any time.
Very simple JSON messages protocol. All packets are serialized in array. Designed for request/reply and publish/subscribe patterns.
Request/Reply
Request structure
- [0]
{Number}
Packet type, always1
- [1]
{String}
Method and resource name. - [2]
{String}
Unique message ID. - [3]
{*}
Payload. - [4]
{Number|String}
Optional date or ETag. - [5]
{Object}
Optional headers.
Method shortcuts:
const METHODS_REVERSE = '<': 'get' '?': 'search' '+': 'post' '=': 'put' '-': 'delete' '&': 'sub' '~': 'unsub';
Example: "<account"
equal get account.
Reply structure
- [0]
{Number}
Reply status, correspond with HTTP status codes. - [1]
{String}
Method and resource name, equal with request. - [2]
{String}
Unique message ID, equal with request. - [3]
{*}
Payload. - [4]
{Number|String}
Optional date or ETag. - [5]
{Object}
Optional headers.
Publish/Subscribe
Event structure
- [0]
{Number}
Packet type, always2
. - [1]
{String}
Event type and resource name. - [2]
{String}
Unique message ID. - [3]
{*}
Payload. - [4]
{Number|String}
Optional date or ETag. - [5]
{Object}
Optional headers.
Event types
=
modified - Notification of change a resource, usually after put request.+
added - Notification of add a resource, usually after post request.-
deleted - Notification of delete a resource, usually after delete request.
Usage
const sjmp = ; console;// [1,"+some/resource","iddqd","request body",1395591341000]