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. Не забудьте адаптировать и расширить его в соответствии с вашими конкретными требованиями и особенностями реализации.