PubNub SSE SDK
Easy to use PubNub SDK with SSE enabled by default.
npm install pubnub-sse
git clone https://github.com/stephenlb/pubnub-sse.git
cd pubnub-sse
open index.html
pubnub.js
PubNub SSE Streaming SDKindex.html
Example app open to see a demo using streaming data.Setup the SDK as follows in the example.
const pubnub = PubNub({ subscribeKey: 'demo', publishKey: 'demo'});
const subscription = pubnub.subscribe({channel: 'test'});
let count = 0;
for await (const msg of subscription) {
console.log(msg);
if (count++ >= 2) break;
}
const pubnub = PubNub({ subscribeKey: 'demo', publishKey: 'demo'});
const subscription = pubnub.subscribe({channel: 'test', messages: reciever});
function reciever(msg) {
console.log(msg);
}
Using the crypto-js
common crypto lib for encryption/decryption.
With added support for Cross-Platform messaging.
const PubNub = require('pubnub-sse'); // npm install pubnub-sse
const PubNubCryptor = require('pubnub'); // npm install pubnub
const pubkey = 'demo';
const subkey = 'demo';
const authKey = 'demo-auth-key';
const userId = 'test-user-id';
const cipherKey = 'pubnubenigma';
const pubnubInstance = PubNub({
publishKey: pubkey,
subscribeKey: subkey,
authKey: authKey,
userId: userId,
});
const pubnubCryptor = new PubNubCryptor({
subscribeKey: subkey,
publishKey: pubkey,
uuid: userId,
authKey: authKey,
cipherKey: cipherKey,
});
const message = { text: "Hello World" };
const stringData = JSON.stringify(message);
const encrypted = pubnubCryptor.encrypt(stringData);
const channel = `test-channel-${Math.random()}`;
const subscription = pubnubInstance.subscribe({channel: channel});
// Publish
setTimeout(async () => {
await pubnubInstance.publish({ channel: channel, message: encrypted});
}, 1000);
// Subscription Stream
for await (const encryptedMessage of subscription) {
const decrypted = pubnubCryptor.decrypt(encryptedMessage);
expect(encryptedMessage).to.equal(encrypted);
expect(encryptedMessage).to.be.a('string');
expect(decrypted).to.be.an('object');
expect(message).to.deep.equal(decrypted);
break;
}
subscription.unsubscribe();
<script src="pubnub.js"></script>
<script>
// PubNub Setup
const userId = 'user-id';
const authKey = 'auth-key';
const channel = 'Commands';
const pubkey = 'pub-c-a88f5e0f-af28-4847-ad52-30495d0cbcb8';
const subkey = 'sub-c-a8cbfccb-676b-4034-9681-dfed95af8d7e';
const pubnub = PubNub({
subscribeKey: subkey,
publishKey: pubkey,
authKey: authKey,
userId: userId,
});
// Subscribe to Events "Starts the Stream"
const subscription = pubnub.subscribe({
channel: channel,
messages: receiveEvents,
});
// End subscription
// subscription.unsubscribe();
// Event Processing
function receiveEvents(event) {
console.log(event);
}
// Publish Events Example
let eventId = 0;
setInterval(() => {
pubnub.publish({
channel: channel,
message: {
eventId: ++eventId,
userId: userId,
data: `Event ${eventId} from ${userId} at ${new Date().toISOString()}`,
},
});
}, 1000);
</script>