1.0.24 • Published 1 year ago

@sash/shuttle v1.0.24

Weekly downloads
-
License
MIT
Repository
gitlab
Last release
1 year ago

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);
};

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

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

1.0.24

1 year ago

1.0.23

1 year ago

1.0.22

2 years ago

1.0.19

2 years ago

1.0.18

2 years ago

1.0.17

2 years ago

1.0.21

2 years ago

1.0.20

2 years ago

1.0.16

2 years ago

1.0.15

2 years ago

1.0.14

2 years ago

1.0.13

2 years ago

1.0.12

2 years ago

1.0.11

2 years ago

1.0.10

2 years ago

1.0.9

2 years ago

1.0.8

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago