rpc-events
v2.1.1
Published
An rpc-engine subclass that makes doing pub-sub things super easy
Downloads
7
Readme
rpc-events
An rpc-engine subclass that makes doing pub-sub things super easy.
Why
Making a remote procedure call to an EventEmitter
's on
or removeListener
methods doesn't really do what you want.
How
JSON-RPC style notifications + wrappers for on
and removeListener
. See the API section below.
Example
var Rpc = require('rpc-events')
var a = new Rpc()
var b = new Rpc()
a.send = b.receive
b.send = a.receive
a.subscribe('event', handler)
function handler (evt) {
console.log(evt) // => 42
a.unsubscribe('event', handler)
}
b.getInterface().emit('event', 42)
Test
$ npm run test
API
See rpc-engine for the superclass API.
Methods
rpc.setInterface(path[, iface])
rpc.setInterface(iface)
Same as superclass, but iface
must implement on
and removeListener
(see EventEmitter
API).
rpc.subscribe(eventName, handler[, onerror])
Subscribe to a remote event.
eventName
AString
.handler
AFunction
.onerror
AFunction
. Will be called if the remote side removes the interface before the local side has calledunsubscribe
.
rpc.unsubscribe(eventName, handler)
Unsubscribe from a remote event.
eventName
AString
.handler
AFunction
.
rpc.open()
This method will reinform the remote about the currently active subscriptions. This is useful for implementing persistent connections where transports may come and go transparently.
rpc.close()
This method extends the superclass implementation to ensure all local and remote subscriptions are torn down before cancelling outstanding requests.
rpc.closeLocal()
rpc.closeRemote()
These methods are invoked by rpc.close
but can be useful independently. Closing the local side removes everything created by calls to rpc.subscribe
, and closing the remote side removes all subscriptions created by the remote peer. rpc.closeRemote
is useful in situations where you plan to reopen the connection at some point without losing track of your subscriptions, but can't be sure if the remote plans to do the same.
Releases
- 2.1
- Add
open
method - Split
close
out into its local and remote components
- Add
- 2.0
- [email protected]
- Alter API to support scenario where remote side removes the interface a local subscription is associated with.
- Try to ensure local behavior is correct even if remote side misses messages or receives them out of order.
- 1.0
- First release
License
MIT