Pubkeeper Browser Client
@pubkeeper/browser-client
enables web browsers to join, consume, and produce content on a Pubkeeper network. This package is an aggregate package that combines sane defaults for using Pubkeeper in a browser.
Installation
Using npm:
$ npm install --save @pubkeeper/browser-client
Then, load using ES5 require()
syntax…
var PubkeeperClient = require('@pubkeeper/browser-client').PubkeeperClient;
…or with ES2015+ import
syntax:
import { PubkeeperClient, WebSocketBrew } from '@pubkeeper/browser-client';
Browser
<script src='https://unpkg.com/@pubkeeper/browser-client/dist/pubkeeper-browser-client.min.js'></script>
Usage
import { PubkeeperClient, WebSocketBrew } from '@pubkeeper/browser-client';
const client = new PubkeeperClient({
server: '[ws/wss]://[your-pk-server]:[your-pk-port]/',
jwt: 'your-pk-token',
brews: [
new WebSocketBrew({
brewerConfig: {
hostname: 'your-websocket-host',
port: 'your-websocket-port',
secure: true,
},
}),
],
});
client.connect().then(() => {
console.log('ready!');
});
Adding a Brewer
client.addBrewer('topic.text', (brewer) => {
const id = setInterval(() => { brewer.brewText('Hello World!'); });
return () => { clearInterval(id); };
});
Adding a Patron
client.addPatron('topic.text', (patron) => {
// is activated
const handler = (uint8, meta) => {
console.log('sender:', meta.from);
console.log('topic:', meta.topic);
console.log('raw data:', uint8);
console.log('text data:', new TextDecoder().decode(uint8));
console.log('JSON data:', JSON.parse(new TextDecoder().decode(uint8)));
}
// The message event is always invoked with a Uint8Array as data, no matter which brew*() method was called on the brewing side.
// Pending a future version, you will need to handle parsing/casting those bytes.
patron.on('message', handler);
return () => {
// deactivation/tear-down
patron.off('message', handler);
};
});
Related Packages
- @pubkeeper/client - The core pubkeeper client.
- @pubkeeper/brew-websocket - The WebSocket brew
- @pubkeeper/crypto-cjs-aes-cbc - AES-CBC encryption support