Я не уверен, но кажется, что если браузер показывает, что он все еще загружает, то это совершенно правильно - разве это не то, чем в основном является программирование на Comet? Сервер все еще отправляет небуферизованный контент, и когда он передается в блоке javascript, он выполняется, что позволяет серверу отправлять события в браузер клиента.
В первые дни Ajax (например, в IE6, где XMLHttpRequest
был отдельным объектом ActiveX), я ожидал, что браузер не будет знать, что он все еще ждет.
Но в Safari 4, Chrome, FX3.5 и во всех современных браузерах встроен XMLHttpRequest
- он знает, что он все еще ждет, пока сервер покажет поток своего контента, точно так же, как и при <IFrame>
Короче говоря - я ожидал бы, что любой подход Comet покажет, что браузер все еще загружает, потому что это так. Я ожидаю, что любой обходной путь, который вы найдете, будет исправлен в будущих сборках, потому что Comet по сути является хаком, чтобы заставить работать серверную модель.
Однако они начали встраивать реальную поддержку серверного push-кода в HTML 5.
Поддерживает ли мобильный Webkit тег HTML 5 draft event-source
? Если это так, вы можете попробовать это.
Тогда у вас будет что-то вроде этого:
<!-- new HTML 5 tag supporting server-push -->
<event-source src="http://myPushService.com" id="service">
<script type="text/javascript">
function handleServiceEvent(event) {
// do stuff
}
// tell browser to fire handleServiceEvent in response to server-push
document.getElementById('service').addEventListener('event name', handleServiceEvent, false);
</script>