Асинхронный сервлет-клиент, сервер push - PullRequest
1 голос
/ 15 июня 2011

Привет, ребята, я хочу обработать некоторые запросы сервера. У меня есть асинхронный сервлет, который обрабатывает что-то, передает его клиенту, а затем обрабатывает что-то еще и снова передает его клиенту (то же соединение). Сервет просто возвращает данные (в данном случае Json, но это не так важно), ничего более.

Так что моя проблема в клиенте. Как мне создать клиент для этого? Например, если я сделаю ajax-запрос с JQuery, как я могу реагировать на данные, поступающие после первого ответа?

Чтобы было яснее, вот что я хочу сравнить: с веб-сокетами у меня есть метод onmesssage.

websocket ws = new WebSocket("ws://myserver.com");
ws.onmessage = function(event)
{
   var x = event.data
   .... // some other code here
}

Так что все, что я хочу, это метод сообщения :). Я думаю, это не так просто, как с веб-сокетами, но, возможно, у кого-то есть идея.

Привет Алекс

1 Ответ

0 голосов
/ 15 июня 2011

Ваш сервер может сгенерировать ответ, который клиент загружает в скрытый iframe. Сгенерированный ответ будет содержать случайные операторы JavaScript, которые обращаются к «извне» (содержащему документ). Вы можете получить в руки содержащий документ, используя parent.

Но, пожалуйста, не то чтобы эта техника была довольно хакерской (по крайней мере, мне кажется). Возможно, вы захотите пересмотреть вопрос об использовании XMLHttpRequest, особенно потому, что он обеспечивает простую и надежную обработку ошибок. Вы можете просто делать больше запросов (вместо добавления к «старому» ответу на стороне сервера). Это, вероятно, приведет к дополнительному отставанию, но этот трюк с iframe действительно проблематичен на практике.

...