phosphor-messaging
A module for inter-object message passing.
Package Install
Prerequisites
npm install --save phosphor-messaging
Source Build
Prerequisites
git clone https://github.com/phosphorjs/phosphor-messaging.gitcd phosphor-messagingnpm install
Rebuild
npm run cleannpm run build
Run Tests
Follow the source build instructions first.
npm test
Build Docs
Follow the source build instructions first.
npm run docs
Navigate to docs/index.html
.
Supported Runtimes
The runtime versions which are currently known to work are listed below. Earlier versions may also work, but come with no guarantees.
- Node 0.12.7+
- IE 11+
- Firefox 32+
- Chrome 38+
Bundle for the Browser
Follow the package install instructions first.
npm install --save-dev browserifybrowserify myapp.js -o mybundle.js
Usage Examples
Note: This module is fully compatible with Node/Babel/ES6/ES5. Simply omit the type declarations when using a language other than TypeScript.
Send a message to a message handler for immediate processing:
The sendMessage
function delivers the messages synchronously, for
immediate processing by the message handler.
; ;sendMessagehandler, new Message'one'; // logs 'one'sendMessagehandler, new Message'two'; // logs 'two'sendMessagehandler, new Message'three'; // logs 'three'
Post a message to a message handler for future processing:
The postMessage
function delivers the messages asynchronously, for
processing by the message handler on the next cycle of the event loop.
; postMessagehandler, new Message'one';postMessagehandler, new Message'two';postMessagehandler, new Message'three'; // sometime later: logs 'one', 'two', then 'three'.
Create custom messages which hold extra data:
;sendMessagehandler, new Message'one'; // logs 'one'postMessagehandler, new Message'two';sendMessagehandler, new ValueMessage42; // logs 42postMessagehandler, new ValueMessage43; // sometime later: logs 'two' then 43
Compress posted messages to reduce duplicate work:
; ;postMessagehandler, new Message'one';postMessagehandler, new Message'expensive';postMessagehandler, new Message'two';postMessagehandler, new Message'expensive';postMessagehandler, new Message'expensive';postMessagehandler, new Message'three';postMessagehandler, new Message'expensive'; // sometime later: logs 'one', 'do something expensive', 'two', then 'three'
Test for, and preemptively deliver, posted messages:
; postMessagehandler, new Message'one';postMessagehandler, new Message'two';postMessagehandler, new Message'three'; hasPendingMessageshandler; // true sendPendingMessagehandler; // logs 'one'sendPendingMessagehandler; // logs 'two' // sometime later: logs 'three'.
Install message filters to spy on or restrict message processing:
; ;;; sendMessagehandler, new Message'two'; // logs 'two' installMessageFilterhandler, spy; sendMessagehandler, new Message'two'; // logs 'spy: two', then 'two' installMessageFilterhandler, filter; sendMessagehandler, new Message'two'; // logs nothing installMessageFilterhandler, spy; sendMessagehandler, new Message'two'; // logs 'spy: two' removeMessageFilterhandler, filter; sendMessagehandler, new Message'two'; // logs 'spy: two', 'spy: two', then 'two' removeMessageFilterhandler, spy; sendMessagehandler, new Message'two'; // logs 'two'
Clear all message data associated with a handler:
; // clear everything - posted messages *and* filtersclearMessageDatahandler;