java netty: HTTPストリーミングのサービスを作るにはで、
ChunkedのデータをFlex(ActionScript)で、Chunk毎に受信をする方法を、再度調べてみることにしました。
というのも、StreamingConnectionHandlerというクラス内で、
チャンクデータを扱っています。
私のやり方のどこがいけなかったのかはまだわかりませんが、
ちょっとこのソースの中身を見てみても、
以下のようにデータのサイズを計算しています。
if (state == SIZE_STATE)
{
value = chunkBuffer.readByte();
if (value == NULL_BYTE) // Ignore the null heartbeat byte.
continue;
// CR indicates that we've finished reading the size.
if (value == CR_BYTE)
{
dataBytesToRead = parseInt(hexChunkSize, 16);
state = LF_STATE;
}
else // Hex digit.
{
hexChunkSize += String.fromCharCode(value);
}
if (chunkBuffer.bytesAvailable == 0)
break;
}
もう一度、このソースを参考に、URLStreamで自分なりにどこが間違っているのか、確認します。
結局、URLLoaderを使っていたために、
出力も一括でいいかなと思っていたのですが、
想定していなかった、URLLoaderがtimeoutの例外イベントを発行します。
だったら、出力はChunkedで出した方がよく、
Chunkedでどうせ出すならば、やはり、ActionScriptでもどうできるのかを、
事前にリスクを洗い出しておこうと思った次第です。
また、StreamingConnectionHandlerはAMF3だけを対象にしているようですが、
Server-Sent Eventにも対応を考えれば、
汎用的なクラスを作っておいた方が良さそうだという次第です。
うまくいったら、airxlibのライブラリの一部として公開する予定です。


