@sash/shuttle
TypeScript icon, indicating that this package has built-in type declarations

1.0.24 • Public • Published

Shuttle

This is an experimental library for internal use that helps you quickly create RPC services without unnecessary code. RabbitMQ is used as a transport.

Это экспериментальная библиотека для внутреннего использования, помогает быстро создавать RPC сервисы без лишнего кода. В качестве транспорта используется RabbitMQ, ничего другого на данный момент не планируется.

Основная идея.

На "сервере":

  • Пользователь описывает логику сервиса в виде класса в typescript
  • Публичные методы помечает декоратором @method
  • Отгружает это в Shuttle.addAction()
  • Shuttle публикует нужные очереди и прочее и обеспечивает удаленный вызов методов

На "клиенте":

  • Пользователь получает дефинишены (это можно сделать разными способами)
  • Получает экземпляр удаженного "класса" через Shuttle.getRemoteAction()
  • Вызывает нужные ему методы и получает результат как обычно
  • Подписывается на события
  • IDE дает подсказочки, ts следит за простыми ошибками т.к. есть дефинишены

Как начинать

------ Надо бы здесь что-то про установку ...

------ Надо бы здесь что-то про конфигурацию ...

Для того чтобы начать, нужно создать экземпляр своего класса и отправить его в Shuttle:

export class SomeClass {

  protected factor = 5;

  @method()
  public async methodName(x: number, y: number): Promise<number> {
    return this.sum();
  }

  private sum(x: number, y: number): number {
    return (parseInt(x) + parseInt(y)) * this.factor;
  }
}


const someObject = new SomeClass();
const shuttle = new Shuttle();

shuttle.addAction('ActionName', someObject);
shuttle.begin();

Код на клиентской стороне при этом буде выглядеть так:

const shuttle = new Shuttle();

const main = async () => {
  const action = await shuttle.getRemoteAction<SomeClass>('ActionName');
  const result = await action.methodName(2, 3);
};

Описание понятий

Описание компонентов

Dependents (0)

Package Sidebar

Install

npm i @sash/shuttle

Weekly Downloads

0

Version

1.0.24

License

MIT

Unpacked Size

294 kB

Total Files

195

Last publish

Collaborators

  • sash