Quick Start

npm

npm i @buccaneer/rxws --save

yarn

yarn add @buccaneer/rxws

Subscribe to messages from a server

import { share } from 'rxjs/operators';
import { messages, ws } from '@buccaneer/rxws';

const websocketParams = {
  url: 'wss://mysite.com',
  topics: ['message', 'news'],
};
const ws$ = ws(websocketParams).pipe(
  share() // pipe the Observable to a Subject
);

// get a stream of messages from the server:
const message$ = ws$.pipe(
  messages() // get all messages from the WebSocket.
);
message$.subscribe(console.log); // log messages from the server

Publish messages to a server

import { from } from 'rxjs';
import { share } from 'rxjs/operators';
import { broadcast, ws } from '@buccaneer/rxws';

const websocketParams = {
  url: 'wss://mysite.com',
  topics: ['message', 'news']
};
const ws$ = ws(websocketParams).pipe(share());

// send a stream of messages to the server:
const messagesToPublish$ = from([
  {text: 'hello', topic: 'message'}, // topics are optional
  {text: 'goodbye', topic: 'message'},
]);
const publisher$ = ws$.pipe(
  broadcast(messagesToPublish$)
);
publisher$.subscribe();

Handle interruptions to the client's connection

import { share } from 'rxjs/operators';
import { connections, disconnections, ws } from '@buccaneer/rxws';

const websocketParams = {
  url: 'wss://mysite.com',
  topics: ['message', 'news']
};
const ws$ = ws(websocketParams).pipe(share());

const disconnection$ = ws$.pipe(
  disconnections()
);
disconnection$.subscribe(
  () => console.log('You are disconnected from the server!')
);
const reconnection$ = ws$.pipe(
  connections()
);
reconnection$.subscribe(
  () => console.log('You have reconnected to the server!')
);

Next steps

Last updated