Minimalistic remote procedure call(RPC/RMI) library bootstrapped on socket.io
It is a minimalistic remote procedure call(RPC/RMI) library bootstrapped on socket.io. Main purpose is to make it more easier to structure your async code for browser-server realtime interaction. Typical example is when you need to call a function on the server from client and get the return value from that function back to the client. With raw socket.io, you need to register few events and emit them at the right moment. This can get complicated quite easily, especially for async operations and error handling. Thanks to promises(and try/catch for sync operations), this library knows when a computation failed or suceeded.
With socket.io-rpc, you just expose a tree of functions and then call those, socket.io-rpc automatically resolves a promise on other side, when function returns or returned promise is resolved. It even propagates errors(thrown and returned), so you get error handling almost for free.
#Simple example Folder with example can be run after installing all dependencies like this in the simple-example folder:
npm install //this runs jspm install too
Then run it from git repo root:
var rpcClient = require'socket.io-rpc-client';var server = rpcClient'';serverexposeconsole.log'called client method';return 42;returnsetTimeoutresolve'resolved after 40ms';40;;notdefined.errorwillpropagate;;iosocketson'connection'rpcMasterloadClientChannelsocket'clientChannel'thenfnsfnOnClient"calling client "thenconsole.log"client returned: " + ret;;;;
//since it is desirable to be able to run the same code in node.js as in the browser, we use systemjs to load commonJS module into the browser//needs to have bluebird and socket.io-client, look into simple_example folder
###With authentication (server)
Set authentication normally as you would with socket.io.
###With authentication (browser)
Send your auth token with the backend connect method(the one that is exported from the module).
numbers are for both clients(vanilla and Angular): IE FIREFOX SAFARI CHROME OPERA IPHONE ANDROID 9.0+ 3.5+ 4.0+ 4.0+ 10.5+ 2.0+ 2.0+
There are 4 internal callbacks, which might help you in case you need to be notified of a request beginning and ending:
batchStarts //called when invocation counter equals 1 batchEnds //called when invocation counter equals endCounter call //called when one call is made to server response //called when a call response is fired