Получать и показывать данные в реальном времени из внешнего REST API - PullRequest
0 голосов
/ 04 октября 2019

Я пытаюсь реализовать веб-платформу внешнего интерфейса, используя Angular 8. Моя цель - иметь возможность непрерывно получать данные в режиме реального времени из веб-службы REST, которая не находится на одном и том же сервере. Для каждой новой информации, которую можно извлечь из WS, я хочу, чтобы она была видна на моей платформе внешнего интерфейса, по крайней мере, в консоли.

Если возможно, я бы избегал обновления каждые X секунд, я нахожу это оченьтяжелый, потому что у меня слишком много данных для извлечения с сервера.

Учтите, что я не могу настроить этот веб-сервис, предоставляющий мне данные.

Что я сделал до сих пор

В моем проекте Angular:

todo.service.ts

export class TodoService {
  todosUrl =  '***urloftodo***';
  todosLimit = ''; // '?_limit=5';

  constructor(private http: HttpClient) { }

  // Get Todos
  getTodos(): Observable<Todo[]> {
    return this.http.get<Todo[]>(`${this.todosUrl}${this.todosLimit}`);
  }
}

todo.component.ts

export class TodosComponent implements OnInit {
  todos: Todo[];
  obslist: Subscription;

  constructor(private todoService: TodoService) { }

  ngOnInit() {
    this.obslist = this.todoService.getTodos().subscribe(todos => {
      console.log(todos);
    });
}

В моем интерфейсе, когда я смотрю на консоль,новые данные не запрашиваются, несмотря на то что некоторые дополнительные данные добавляются на сервер (проверено через браузер / почтальон)

Я много слышал о наблюдаемых и веб-сокетах, но не знаю, как искать. Я немного растерялся!

1 Ответ

0 голосов
/ 04 октября 2019

Как указано в моем комментарии, HttpClient.get - это однократный запрос.
Чтобы сделать этот запрос непрерывно, вы можете использовать RXJS interval

const timer = 5000; // ms
interval(timer)
.pipe(
  mapTo(
    // Your request
  ),
  flatMap(v => v) // Flatten
)

Я сделал стекаблит здесь .

Если ваш WebService предоставляет способ подключения веб-сокетов, посмотрите веб-сокет RXJS

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...