@bottlenose/rxsocketio
v0.7.0
Published
RxJS operators for handling socket.io connections
Downloads
5
Readme
Description
@bottlenose/rxsocketio
is part of the Bottlenose project. It is a simple, lightweight package which makes it easy to create two-way data streams using Socket.io and RxJS's pipeable operators. Its intent is to encapsulate common websocket patterns (that normally require dozens or hundreds of lines of code to implement) into one-line operators that rely on convention and configuration instead of muddying up your codebase.
Installation
npm i @bottlenose/rxsocketio --save
Or...
yarn add @bottlenose/rxsocketio
Compatability
| Platform | Support | | :--- | :--- | | node.js (>10.0) | ✅ | | Browsers | ✅ | | React Native | ✅ | | Electron | ✅ |
Documentation & Guides
Basic Usage
import {from} from 'rxjs';
import {conduit} from '@bottlenose/rxsocketio';
const messageIn$ = from([
{topic: 'message', body: 'yarrr'},
{topic: 'message', body: 'arrr matey'},
{topic: 'message', body: 'Vitamin C? Never heard of it.'},
]);
const socketConfig = {
url: 'http://localhost:9080/ws', // socket.io server
topics: ['message'], // topics to subscribe to. (Defaults to ['message']).
};
// the conduit operator sends messages from messageIn$ and emits messages
// from the server
const messageBack$ = messageIn$.pipe(conduit({...socketConfig}));
messageBack$.subscribe(console.log);
// {topic: 'message', body: 'Welcome Matey.'}
// {topic: 'message', body: 'Yo ho. Yo ho. I am a message from the server.'}
The library also supports some advanced features commonly needed in real applications (like sending binary, verifying receipt of messages before sending the next, customizing the socket.io client, serializers/deserializers and handling disconnections). See the documentation for more information.