Я пытаюсь прослушивать в режиме реального времени события socket.io, у меня есть серверная часть в Node, которая ее излучает, и служба внешнего интерфейса, слушающая ее, но она отображается только в представлении после перезагрузки страницы.
Мое приложение отправит много событий за секунды (каждое событие - это запрос Post), после того как я отправлю запрос на публикацию, мой back-end console.log будет мгновенным (что я и хочу), но, как я уже сказалмой интерфейс не.
Узел:
const event = req.body;
app.post('/webhook', (req, res) => {
io.sockets.on('connection', function (socket) {
socket.emit('event', require('util').inspect(event));
});
res.json({
status: 'ok'
});
});
Сервис:
observable:Observable<string>;
socket;
constructor() {
this.socket = io("http://localhost:8080");
}
getData(event: String) : Subject<any> {
let subj = new Subject;
this.socket.on(event, data => subj.next(data));
return subj;
}
Компонент:
constructor(private _eventsService : EventsService) {
this._eventsService.getData('event').subscribe(data => {
console.log(data); // Only logs after reload
});
}
В основном яя хочу продолжать слушать события во Front-end, и когда я отправляю запрос Post в / webhook, отправляет это событие, и мои обновления обновляются (или журналы и т. д.).