Перейти до основного вмісту

Сервіс сесій

інформація

Сервіс сесій спрямований на створення та керування http та ws сесіями користувача. По відміну від http сесій, ws сесії використовують спеціалізовані з'єднання, які потрібно зберігати в межах конкретного екземпляру сервісу сесій, а отже, в межах одного ядра обчислень.

Обробка http сесій включає їх зберігання та обробку в сховищі Redis. У випадку ws сесій також потрібна окрема колекція Map в мові JavaScript для зберігання з'єднань. При обробці ws сесій спочатку знаходиться з'єднання, а потім отримується інформація про сесію з сховища Redis.

Архітектура

Сервіс сесій входить у загальний цикл активації та вимкнення ядра обчислень і використовується у бізнес-схемі та структурних модулях ядра обчислень.

Він надає перелік методів, що безпосередньо використовуються в бізнес-схемі для організації роботи з сесіями. Доступ до функціональності здійснюється через простір імен sessions у функціональному агенті.

sessions-service-arch.svg

інформація

Використання сховища Redis для зберігання сесій надає можливість будь-якому ядру обчислень аутентифікувати користувача та відповідно виконати приватний кінцевий маршрут. Цей механізм забезпечує підтримку горизонтального масштабування системи в цілому.

Застосування

Методи сервісу сесій використовуються виключно в бізнес-схемі, тому:

import { setRouter } from '@x-fiber/calculator';

type Routes = 'get-one'

export const BusUsersAggRouter = setRouter<Routes>({
'get-one': {
GET: {
version: 'v1',
scope: 'public:route',
params: [],
handler: async (request, agents, context) => {
const { sessions } = agents.fnAgent;

type User = {
name: string;
surname: string;
age: number;
};

const sessionId = await sessions.http.openHttpSession<User>({
name: "John",
surname: "Doe",
age: 18,
});

console.log(sessionId); // string session unique identifier
},
},
},
});

де:

  • setRouter є вбудованою функцією ядра обчислень, що відповідає за створення опису документа Маршрутизатор.
  • BusUsersAggRouter - опис документа Маршрутизатор в прикладній області BusUsersAgg.
    • User - тип структури користувача.
    • sessionId - унікальний ідентифікатор сесії в строковому форматі.