Как сделать комету длинным натяжением с ActionScript3? - PullRequest
2 голосов
/ 01 июня 2010

Я хочу загрузить данные с моего веб-сервера, хочу, чтобы это был способ AJAX / Comet, мой веб-сервер долго удерживает запрос, отвечает на него, пока что-то не произойдет. Таким образом, я написал некоторый код as3 следующим образом:

    private function load(): void {
        var request:URLRequest = new URLRequest(url);
        var variables:URLVariables = new URLVariables();
        variables.tick = this.tick;
        request.data = variables;
        urlLoader = new URLLoader(request);
        urlLoader.addEventListener(Event.COMPLETE, onComplete);
        urlLoader.addEventListener(IOErrorEvent.IO_ERROR , onIOError);
        log.info("Loading info from {0}", request.url);
    }

Это работает, если время ожидания короткое, но, тем не менее, это не удалось с IOError 2032, кажется, время ожидания истекло. Вот проблема, как я могу сделать длинный опрос с as3 и избежать ошибки тайм-аута?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 01 июня 2010

Я бы предложил использовать BlazeDS для такого рода вещей. Вы можете столкнуться со многими проблемами, если хотите создать свой собственный механизм опроса, и вам придется писать много кода.

Что касается вашей проблемы, Flash Player использует стек браузера для связи, поэтому ваш запрос не будет выполнен, даже если у вас есть приложение html / js. Проверьте документацию вашего браузера, как увеличить время ожидания.

1 голос
/ 02 июня 2010

вы можете использовать URLStream в качестве сокета (по крайней мере, для чтения) и отправлять некоторые фиктивные данные проверки активности с сервера. Допустим, 0x00 помечает keepalive и 0xFF помечает контент, за которым следует длина 32-битного контента и сам контент.

Не забудьте выполнить сброс на стороне сервера, иначе сервер может решить сохранить 1 байт в своем буфере.

Также flexcomet может представлять интерес для вас.

Greetz
back2dos

...