rpc-web-channel mimics to QtWebChannel JavaScript API, but uses JSON-RPC 2.0 protocol over uni-directional communication channel. In general rpc-web-channel JavaScript Client is the client API for rpc-web-channel server, which builds client-side stubs based on JSON Schema Service Descriptor
The regular JSON-RPC 2.0 client code:
var jrpc = new simple_jsonrpc(); //set a communication function jrpc.toStream = function(_msg){ ... }; //call jrpc.call("object.slot").then(function (result) { ... }); The rpc-web-channel client:
var jrpc = new simple_jsonrpc(); jrpc.toStream = function(_msg){ ... }; new rpc-web-channel(jrpc, function(services) { services.object.slot().then(function (result) { ... }); }); rpc-web-channel allows the symplyfied access to getters and setter. The regular access looks like:
// Properties access object.setProperty("I'm setter").then(function (result) { document.getElementsByClassName('paragraph')[0].innerHTML += 'object.setProperty result: ' + result + '<br>'; // call Getter as function call object.getProperty().then(function (result) { document.getElementsByClassName('paragraph')[0].innerHTML += 'object.getProperty result: ' + result + '<br>'; }); }); And the symplified version:
// Anonymous local async function call is nedded for further await (async function() { // wait for setter finish await (object.propertyWithGetterSetter = 42); // wait for getter finish let property = await object.propertyWithGetterSetter; // synch access to property document.getElementsByClassName('paragraph')[0].innerHTML += 'propertyWithGetterSetter result: ' + property + '<br>'; }()); - QtWebChannel enables peer-to-peer communication between a server (QML/C++ application) and a client (HTML/JavaScript or QML application)
- JSON Schema Service Descriptor is simply a JSON Schema with the additional definition for methods.
- simple-jsonrpc-js - Simple JSON-RPC javascript library. Generate and parse json rpc messages