SseService
Сервис SseService
предназначен для управления серверными событиями (Server-Sent Events, SSE) в приложении Angular. Он устанавливает соединение с сервером, получает события и обрабатывает их.
Методы
open
open(config: SseConfig): Observable<EventSourceMessage>;
Метод возвращает Observable
для запуска соединения с сервером SSE. Принимает объект с параметрами настройки:
Параметр | Тип | Обязателен | Описание | Значение по умолчанию |
---|---|---|---|---|
url | Строка | Да | URL-адрес для подключения к SSE (Server-Sent Events) сервису | - |
method | Строка | Нет | HTTP-метод запроса (обычно используется "GET" для SSE) | "GET" |
headers | Объект | Нет | Объект с дополнительными заголовками HTTP для запроса | Если есть токен авторизации, то: { 'Authorization': 'Bearer ${token}' } . Иначе: {} |
body | Объект | Нет | Тело запроса, если требуется (обычно не используется с SSE) | null |
subscribe
subscribe(): Subscription;
Метод должен быть вызван на Observable
, возвращаемом из метода open
, для открытия соединения SSE.
unsubscribe
unsubscribe(): void;
Метод должен быть вызван на Subscription
, возвращаемой из метода subscribe
для закрытия соединения SSE.
Также можно использовать аналогичные методы из rxjs, позволяющие отписаться от подписки (например: take
, takeUntilDestroyed
и т.д.)
log
private log(message: string, data?: any, type: 'info' | 'warn' | 'error' = 'info'): void;
Приватный метод для логирования сообщений. В зависимости от типа сообщения (info
, warn
, error
), выводит его в консоль.
Использование
Пример использования сервиса в Angular компоненте:
Предоставьте провайдер для SseService
в том месте, где вы хотите использовать сервис
(в компоненте, модуле или конфигурации приложения):
import { SseService } from '@diasoft/qpalette-sse-client';
//...
{
providers: [
SseService
]
}
Затем используйте сервис в компоненте:
import { Component, OnInit, OnDestroy } from '@angular/core';
import { SseService, SseConnection } from '@diasoft/qpalette-sse-client';
@Component({
selector: 'app-example',
template: `<p>{{ message }}</p>`,
})
export class ExampleComponent implements OnInit, OnDestroy {
public message: string;
private connection: SseConnection;
constructor(private sseService: SseService) {}
ngOnInit(): void {
this.connection = this.sseService
.open({ url: 'http://localhost:4300/events' })
.pipe(finalize(() => console.log('Connection closed')))
.subscribe({
next: (message: EventSourceMessage) => this.message = message.data,
error: (err) => console.error('Error occurred', err)
});
}
ngOnDestroy(): void {
this.connection.unsubscribe();
}
}
Примечания
- Убедитесь, что сервер корректно настроен для отправки событий SSE.
- Обязательно обрабатывайте ошибки и закрытие соединения для обеспечения стабильной работы приложения.
Этот пример документации описывает основные методы и использование сервиса SseService
. Не забудьте адаптировать и расширить его в соответствии с вашими конкретными требованиями и особенностями реализации.