postal.preserve

Add-on for postal.js that provides message durability features.

Usage no npm install needed!

<script type="module">
  import postalPreserve from 'https://cdn.skypack.dev/postal.preserve';
</script>

README

postal.preserve

v0.1.0

The API is still fluctuating. Expect changes.

What Is It?

This is an add-on for postal.js that provides message "durability" features. If a message is published with a preserve header value set to true, it will be preserved so that future subscribers that match the channel and topic will receive it if they call enlistPreserved() to opt into receiving preserved messages.

Usage

To publish a message that should be preserved, you need add the proper header(s) to the envelope:

var ui = postal.channel("ui");
ui.publish({
    topic: "something.happened",
    data: {
        foo: 'bar'
    },
    headers: {
        preserve: true,
        expires: new Date("2020-05-15T04:45:00.000Z");
    }
});

You can see in the above example that you may optionally provide an expires header that is a valid JavaScript Date instance. Any time a new subscriber opts in to preserved messages, expired messages are purged first, before the new subscriber receives anything.

To opt into receiving preserved messages:

var sub = ui.subscribe("something.happened", function (data, envelope) {
    // do stuff with data, etc.
}).enlistPreserved();

Building