У меня есть реализация клиента веб-сокета. Он слушает сервер 1 для ответов. Как только клиент получает ответ от сервера 1. Он подключается к другому серверу 2 через http, чтобы получить объекты. Я смотрю синхронные звонки на сервер 2. Может кто-нибудь подсказать, пожалуйста, как этого можно добиться?
Пример кода: здесь клиент слушает сервер 1.
this.chatSubscription = this.stompClient.subscribe("/chat/" + id, (message) => {
console.log(message.body);
this.store.dispatch(new NotificationActions.TryNotificationsList({
url: this.utilService.host + 'message'
}));
});
Код эффектов: здесь клиент подключается к серверу 2 через http для получения объектов. Вот где я пытаюсь поставить блокировку, чтобы к серверу был установлен только один запрос 2.
@Effect({
dispatch: false
})
actionTryNotificationsList = this.actions$
.ofType(NotificationActions.TRY_NOTIFICATIONS_LIST)
.switchMap((actions: NotificationActions.TryNotificationsList) => {
const data = actions.payload;
return this.requestsService.getRequest(data.url)
.pipe(catchError(this.requestsService.handleError < any > ('Unable to connect to server')))
.map((response: any) => {
if (response instanceof HttpResponse) {
if (response) {
this.displayNotificationService.notificationsList$.next(notificationsList);
}
}
}
код для функции getRequest:
getRequest(url: string) {
const tkn = this.cookieService.get("token");
const httpOptions = {
observe: 'body',
responseType: 'json',
headers: new HttpHeaders({
'token': tkn,
'Content-Type': 'text/plain'
})
};
const req = new HttpRequest("GET", url, httpOptions);
return this.httpClient.request(req);
}
Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.
Пожалуйста, укажите мне, как я могу реализовать блокировку. Любая помощь очень ценится.