2014-10-08 2 views
0

У меня есть приложение Spring + SockJS, использующее ActiveMQ в качестве брокера сообщений.SocketJS несколько гнезд

Могу ли я иметь два сокета на одной странице JSP, один с передачей и приемом, а другой - только для приема сообщений топа (с большим количеством трафика). Он гарантирует, что все сообщения будут доставлены и получены от обоих Розетки?

С уважением, Марко

ответ

0

При подключении, да. Если вы потеряете соединение в любой момент, вы потеряете все между отключением и повторным подключением. A related discussion of this issue приходит к такому выводу.

Следует помнить, что SockJS может приводить к различным типам подключений на разных клиентах, таких как websocket, xhr, xdr и т. Д. При любом подключении SockJS по-прежнему будет использовать TCP и по-прежнему будет гарантировать доставку в порядке. Тем не менее, подключение к не-websocket может занять больше времени, чтобы вызвать событие закрытия, поэтому на клиенте у вас будут более длительные периоды ожидания. Почти любой сервис должен беспокоиться об этом, потому что SockJS иногда не сможет подключить веб-узел и «понизить» до xhr (по моему опыту при высокой мгновенной нагрузке).

Хороший шаблон для добавления повторного подключения в обработчик события закрытия. Закрытие даже запускается, даже если соединение не установлено, что означает, что вы хотите получить отсрочку при повторном подключении, чтобы предотвратить наложенное на ваш сервер DDoS. Отдельно добавляю последовательные номера пакетов и обрабатываю любого клиента, который обнаруживает недостающий пакет как поздний столяр. (См. Это related ZMQ discussion on late joiners.) Ваши приложения могут отличаться.

 Смежные вопросы

  • Нет связанных вопросов^_^