@obsidize/rx-socket
TypeScript icon, indicating that this package has built-in type declarations

1.2.0 • Public • Published

@obsidize/rx-socket

An rxjs-based implementation of a standard duplex socket.

This implementation does not know (or care really) about the transport layer where the data ultimately ends up. Rather, this allows for a compact and efficient way of linking send and receive streams in order to do the heavy lifting for "round-trip" protocols.

Installation

  • npm:
npm install --save @obsidize/rx-socket
  • git:
npm install --save git+https://github.com/jospete/obsidize-rx-socket.git

Usage

Example

The below example uses a socket instance for both the client and the server.

However, when using this in your app you should only use this module as either the client or the server, but not both (unless you like talking to yourself).

import { RxJsonSocket } from '@obsidize/rx-socket';
import { delay, first, tap } from 'rxjs/operators';

const sendMessage = { message: 'hello' };
const receiveMessage = { message: 'world!' };

const client = new RxJsonSocket();
const server = new RxJsonSocket();

client.setBufferReceiveSource(server.bufferStream.onSend.pipe(
	delay(10),
));

server.setBufferReceiveSource(client.bufferStream.onSend.pipe(
	delay(10),
	tap(() => server.emit(receiveMessage))
));

client.textStream.onSend.subscribe(v => console.log('client textStream.onSend: ' + v));
client.textStream.onReceive.subscribe(v => console.log('client textStream.onReceive: ' + v));

server.textStream.onSend.subscribe(v => console.log('server textStream.onSend: ' + v));
server.textStream.onReceive.subscribe(v => console.log('server textStream.onReceive: ' + v));

// The client and server sockets are "glued together" in such a way that we can
// send a message and wait for a response all in one go - much like an HTTP or websocket request.
const serverResponse = await client.send(sendMessage)
	.pipe(first())
	.toPromise();

console.log(serverResponse); // { message: 'world!' }

See the General Usage and RxSocketSubject test suites to get a feel for how to use this module.

API

Source documentation can be found here

Package Sidebar

Install

npm i @obsidize/rx-socket

Weekly Downloads

1

Version

1.2.0

License

MIT

Unpacked Size

33.7 kB

Total Files

23

Last publish

Collaborators

  • jospete