rxwire
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

RxWire

RxWire is a small library that makes it simple to communicate RxJS Observables over any channel.

Below are a few code examples:

Creating a RxWire instance

The RxWire constructor takes one argument: an object that implements the Wire interface.

Below is a sample generator function that creates a RxWire instance from a provided Socket object from Socket.io:

import { RxWire } from 'rxwire';
import { Socket } from 'socket.io';

/**
 * Creates an RxWire instance that communicates observables over a socket.io connection
 * @param socket the socket to manage
 */
export function RxWireFromSocket(socket: Socket): RxWire {
    return new RxWire({
		on: <T>(event: string, handler: (data: T) => void): void => {
            socket.on(event, handler);
		},
		once: <T>(event: string, handler: (data: T) => void): void => {
            socket.once(event, handler);
		},
		off: <T>(event: string, handler: ((...args: any[]) => void)): void => {
			socket.off(event, handler);
		},
		emit: <T>(event: string, data?: T): void => {
            socket.emit(event, data);
		}
	});
}

Example #1 - Registering observables

To allow an observable to be observed across the wire, they must be registered. Below is a demonstration of how to register an observable:

import { RxWire } from 'rxwire';
import { interval } from 'rxjs';

// First, create an RxWire instance
const wire: RxWire = RxWireFromSocket(some_socket);

// Next, register two observables
wire.register('every-second', interval(1000));
wire.register('every-two-seconds', interval(2000));

// NOTE: Nothing will happen until the peer on the other side of the wire subscribes to one of these registered observables by name ('every-second' or 'every-two-seconds').

Example #2 - Subscribing to observables

To subscribe to an observable registered by the peer on the other side of the wire, it's equally simple:

import { RxWire } from 'rxwire';

// First, create the RxWire for the client
const wire: RxWire = RxWireFromSocket(some_socket);

// Observe one of the observables registered
wire.observe$('every-second')
    .subscribe(() => console.log('Beep!'));

Registering and observing

Each side of the wire can both register and observe events.

Contributing

My goal is to keep this project extremely small. If you find a bug, please submit an Issue.

Package Sidebar

Install

npm i rxwire

Weekly Downloads

0

Version

1.0.0

License

MIT

Unpacked Size

14.1 kB

Total Files

8

Last publish

Collaborators

  • connerdouglass