Создайте интерфейс менеджера сообщений для вашего клиента. Любые исходящие запросы отправляются в очередь, которую обрабатывает этот менеджер. Он будет последовательно обрабатывать сообщения из очереди (т. Е. Когда вызывается обратный вызов последнего сообщения, отправленного на сервер, он может затем безопасно перейти к обработке следующего сообщения из очереди).
Вы можете использовать другой ресурс соединения, оставив соединение Comet открытым для сервера. Сервер будет передавать любые возвратные сообщения клиенту через это соединение Comet. Вам нужно будет пометить исходящие сообщения уникальным номером, который может быть встроен в качестве свойства входящих сообщений, чтобы результаты можно было сопоставить с запросом. Менеджер обмена сообщениями отправит сообщение о результате соответствующему обработчику для этого результата.
По сути, вы используете два ресурса соединения для установления двунаправленного обмена сообщениями. Но не существует искусственного ограничения на количество запрашивающих на клиенте (хотя запрос будет последовательно передаваться на сервер). Однако процесс отправки всегда выполняется быстро, потому что вы не ждете, пока будет вычислен какой-либо результат - вам просто нужно надежно доставить сообщение на сервер и вернуться. Результаты возвращаются асинхронно на другом соединении Comet.
Мы делаем что-то в этом направлении с нашими клиентскими приложениями Flex в сочетании с Adobe BlazeDS, работающими на нашем веб-сервере Tomcat:
Асинхронный стек на основе Flex