Заказ и фильтрация Server-Sent-Events в файле angular.js eventsource

У меня есть клиент в AngularJS, где я использую несколько SSE (Server-Sent-Events) в Java со стороны сервера (на сервере есть несколько конечных точек на разных веб-серверах). Ссылка на диаграмму

В настоящее время я регистрирую слушателя для каждого типа событий, исходящих из каждого SSE-соединения, например:

source.addEventListener('alpha', function(e) {
  doSomething();
}, false);

Цель состоит в том, чтобы показать уведомление, основанное на этих событиях, и с этим у меня есть несколько вопросов:

  • Как клиент может знать, изменилась ли информация в бэкэнд?
  • Как организовать и фильтровать эти события? Например, получая одновременно несколько событий из нескольких подключений, как я могу управлять ими, чтобы показать клиенту конкретное уведомление о конкретном событии?

Примечание. Я говорю не только об организации события для каждого типа, но мне также нужно иметь в виду, если событие более важно, чем другое.

Пока я только думаю о получении всех событий и сохраняю их в списке, который я мог бы заказывать и фильтровать. Есть ли проблема, если одновременно запускаются два события SSE? Вы знаете пример этого?

  • Это хорошая идея, чтобы сделать логику для организации событий на стороне клиента?
  • Должен ли я создать базу данных для этих событий?

Спасибо,

7 голосов | спросил vak 20 72016vEurope/Moscow11bEurope/MoscowSun, 20 Nov 2016 08:05:40 +0300 2016, 08:05:40

1 ответ


0
  

Как организовать и фильтровать эти события?

     

, но я также должен иметь в виду, если событие более важно, чем другое.

Я бы предположил, что у вас одна или несколько очередей. Когда происходят события, они попадают в очередь. Как они обрабатываются, зависит от требований вашего подхода.

У вас может быть несколько очередей, каждая из которых представляет приоритет и помещает ваши события в нужные ведра. Более высокие очереди приоритетов сначала потребляются системой уведомлений.

У вас также может быть одна большая очередь с приоритетными событиями в позиции головы. Вы можете либо размещать события в очереди, либо повторно сортировать каждый раз, когда происходят события, или делать некоторую интеллектуальную логику, чтобы вводить события в положение, чтобы избежать повторной сортировки.

  

Можно ли сделать логику для организации событий на стороне клиента?

В зависимости от ваших требований. Но он добавляет некоторые накладные расходы, делая это в обоих местах.

  

Должен ли я создать базу данных для этих событий?

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

  

Как клиент может знать, изменилась ли информация в бэкэнд?

Вы используете SSE. Просто отправьте сервер другому событию, информирующему вас об этом изменении. Возможно, вам потребуется обновить свою логику, чтобы обновлять события в очереди, а также вашу полезную нагрузку, чтобы указать, что эти события связаны.

  

Есть ли проблема, если одновременно запускаются два события SSE?

JavaScript является однопоточным. Даже если два события отправляются одновременно и одновременно поступают в ваш браузер, JavaScript будет выполнять только одно событие за раз.

ответил Joseph 22 22016vEurope/Moscow11bEurope/MoscowTue, 22 Nov 2016 01:10:03 +0300 2016, 01:10:03

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132