Что такое шаблон java cometd для уведомления клиентов о событиях на стороне сервера?

Я изо всех сил пытаюсь понять эффективный способ уведомить клиентов, не тратя впустую потоки. Когда клиент подключается к сервлету CometD, я хочу начать мониторинг серверных событий для клиента и публиковать их на клиенте, когда они доступны. Это должно быть сделано в пуле потоков или в том, что не использует поток сервлета. Все примеры, которые я вижу, относятся к клиентским событиям и слушателям на сервере. Мне нужно обратное... Я просто передаю объект Client/ServerSession своему собственному оборудованию? Кажется, что это будет обычным делом, но я не могу найти никаких примеров.

1 ответ

Посмотрите на Servlet 3.0 Async API. Особенно, ServletRequest.startAsync() вернет вам AsyncContext объект, который вы можете "передать на собственное оборудование", а затем вернуть из вашего сервлета doGet()/doPost()/ и т. д. без разрыва соединения.

Затем существуют различные шаблоны для отправки данных обратно клиенту. Я верю, что ваша "собственная машина" может просто ServletResponse от AsyncContext и напиши ему. Другой подход заключается в том, чтобы позвонить dispatch() на AsyncContext что приведет к повторному вызову метода doGet () / doPost ().

Другие вопросы по тегам