UNPKG

rxprotoplex-websocket

Version:

A lightweight library for creating Plex connections over WebSocket, enabling multiplexed communication for real-time applications.

72 lines (51 loc) 2.82 kB
# rxprotoplex-websocket `rxprotoplex-websocket` is a lightweight library that creates a Plex connection over WebSocket, enabling multiplexed communication and signaling for real-time, peer-to-peer, and streaming applications. This package supports creating Plex connections from either a WebSocket URL or an existing WebSocket instance, offering flexibility and ease of integration with other networking setups. ## Installation Install the package using npm: ```bash npm install rxprotoplex-websocket ``` ## Usage `rxprotoplex-websocket` provides a flexible `fromWebSocket` function that allows you to create a Plex connection from either a WebSocket URL or an already established WebSocket instance. ### Importing Import `fromWebSocket` from the package: ```javascript import { fromWebSocket } from 'rxprotoplex-websocket'; ``` ### Creating a Plex Connection You can create a Plex connection from either a WebSocket URL or an existing WebSocket instance. The function will return a Plex-wrapped WebSocket stream, enabling multiplexed communication over the WebSocket. #### Example 1: Creating a Plex Connection from a URL ```javascript const plex = fromWebSocket("wss://example.com/socket", { wsOptions: { protocols: ["my-protocol"] }, id: b4a.from([1, 2, 3]), handshake: b4a.from([4, 5, 6]), encoding: c.json, unique: true }); ``` #### Example 2: Creating a Plex Connection from an Existing WebSocket Instance ```javascript const ws = new WebSocket("wss://example.com/socket"); const plex = fromWebSocket(ws, { id: b4a.from([1, 2, 3]), handshake: b4a.from([4, 5, 6]), encoding: c.json, unique: true }); ``` ### Options - **urlOrWebSocket** (`string | WebSocket`): Either a WebSocket URL (string) or an existing WebSocket instance. - **options**: Configuration options for the WebSocket and Plex setup. #### WebSocket-Specific Options (`wsOptions`): - **`protocols`**: Protocols array to specify subprotocols for the WebSocket connection. #### Plex-Specific Options - **`id`** (`Uint8Array`): Unique identifier for the Plex instance (default: `b4a.from([])`). - **`handshake`** (`Uint8Array`): Initial handshake value (default: `b4a.from([])`). - **`handshakeEncoding`** (`Object`): Encoding format for the handshake value (default: `c.raw`). - **`onhandshake`** (`function`): Callback to accept or reject a connection based on the handshake (default: `(handshake) => true`). - **`encoding`** (`Object`): Encoding format for the values in a stream (default: `c.raw`). - **`unique`** (`boolean`): Whether the underlying protomux channels allow multiple opens for the same protocol/ID pair (default: `false`). - **`streamOptions`** (`Object`): Additional default options for the underlying Duplex streams. ## License This package is licensed under the MIT License.