Если вы используете сервлет (до версии 3.0), то, я думаю, вам придется использовать pull из-за модели программирования сервлета. Тем не менее, есть преимущества в использовании модели push . В первую очередь, бесполезная трата нагрузки на сервер и ограничение задержки. Вот почему существуют такие технологии, как комета . Servlet 3.0 также поддерживает push-модель . Они обычно используются в приложениях на основе ajax.
На самом деле, я считаю, что push-модель больше подходит для приложения для чата. из-за быстрого времени отклика (= лучшего пользовательского опыта) он может обеспечить.
Если вы используете реализацию на основе nio для push-модели, вы можете поддерживать тысячи или даже более 10 000 одновременных подключений (очевидно, ваш размер варьируется).
Если вы используете традиционную реализацию на основе ввода-вывода, она, вероятно, будет в диапазоне сотен одновременных соединений (хотя не принимайте эту оценку слишком серьезно. Я просто даю эти цифры, чтобы дать очень, очень грубое ощущение ).
Что касается tomcat, в последний раз, когда я проверял, люди говорили, что у него не будет хорошей поддержки push-модели до версии 7.0. Но я не слежу за текущим статусом, поэтому я не уверен (извините, возможно, кто-то еще может помочь вам в этом). Если это так, вы можете проверить поддержку кометы jetty
.
grizzly
и netty
также являются хорошими сетевыми платформами на основе NIO, но если вы захотите использовать JSP и обнаружите, что tomcat недостаточно, я думаю, лучшим решением будет Jetty.
edit: (дополнительная информация)
В этих «push-моделях» сервер не открывает соединение с клиентом. Соединение будет поддерживаться, и сервер будет отправлять сообщения так, как считает нужным.
Кроме того, это не похоже на то, что есть только модели "push" и "pull". Вы можете иметь гибрид, как длинный опрос.