Skip to content

unadlib/data-transport

Folders and files

NameName
Last commit message
Last commit date

Latest commit

80969c7 · Jul 1, 2023
Mar 20, 2023
Aug 27, 2020
Jul 1, 2023
Aug 29, 2020
Jul 1, 2023
Jul 1, 2023
Aug 26, 2020
Aug 26, 2020
Aug 26, 2020
Feb 21, 2022
Sep 5, 2020
Aug 26, 2020
Aug 24, 2020
Jul 1, 2023
Aug 29, 2020
Jul 1, 2023
Sep 9, 2020
Feb 4, 2021
Apr 14, 2023

Repository files navigation

data-transport

Node CI npm version

A simple and responsible transport

Motivation

Many front-end communication APIs based on JavaScript are almost one-way communication, and their communication interface are often different. In terms of communication interaction protocols, we need an universal and responsive communication library that will help us communicate in any scenario very simply and easily.

And It is also very easy to mock to be used for testing, and it is also easy to design an common interface that is compatible with multiple communication APIs.

Support Transport

data-transport is a generic and responsible communication transporter

  • iframe
  • Broadcast
  • Web Worker
  • Service Worker
  • Shared Worker
  • Browser Extension
  • Node.js
  • WebRTC
  • Electron
  • More transport port

Usage

  • Installation
yarn add data-transport
  • Create transport in main page
import { createTransport } from 'data-transport';

const external = createTransport('IFrameMain');
external.listen('hello', async (num) => ({ text: `hello ${num}` }));
  • Create transport in the iframe
import { createTransport } from 'data-transport'

const internal = createTransport('IFrameInternal');
expect(await internal.emit('hello', 42).toEqual({ text: 'hello 42' });

APIs

  • createTransport() Create a transport instance by transport options.

  • mockPorts() Mock ports for testing.

  • merge() Merge multiple transports into one transport.

Transport class
  • Transport
  • MessageTransport
  • IFrameMainTransport
  • IFrameInternalTransport
  • SharedWorkerClientTransport
  • SharedWorkerInternalTransport
  • ServiceWorkerClientTransport
  • ServiceWorkerServiceTransport
  • WorkerMainTransport
  • WorkerInternalTransport
  • BrowserExtensionsGenericTransport
  • BrowserExtensionsMainTransport
  • BrowserExtensionsClientTransport
  • ElectronMainTransport
  • ElectronRendererTransport
  • WebRTCTransport
  • BroadcastTransport
  • MainProcessTransport
  • ChildProcessTransport

Example