2012-04-08 2 views
0

Я пытаюсь написать HTTP-сервер на основе netty, который принимает текст в качестве входных данных и возвращает изображение в качестве вывода. Это изображение генерируется «на лету» на основе входного текста.http потоковый ответ неподдерживаемый тип сообщения: class org.jboss.netty.handler.stream.ChunkedStream

Я скопировал логику org.jboss.netty.example.http.file.HttpStaticFileServerHandler в мой собственный обработчик, и вместо того, чтобы писать DefaultFileRegion в качестве выходного сигнала в канале,

final FileRegion region = new DefaultFileRegion(raf.getChannel(), 0, fileLength); 
writeFuture = ch.write(region); 

Я делаю следующий в моем собственном обработчике:

InputStream imageIOStream = imageGenerator.generateImage(inputText); 
ChannelFuture writeFuture = ch.write(new ChunkedStream(imageIOStream)); 

Но я получаю следующее исключение на сервере, когда я пытаюсь написать обратно клиенту.

java.lang.IllegalArgumentException: unsupported message type: class  org.jboss.netty.handler.stream.ChunkedStream 
at org.jboss.netty.channel.socket.nio.SocketSendBufferPool.acquire(SocketSendBufferPool.java:56) 
at org.jboss.netty.channel.socket.nio.NioWorker.write0(NioWorker.java:463) 
at org.jboss.netty.channel.socket.nio.NioWorker.writeFromUserCode(NioWorker.java:390) 
at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.handleAcceptedSocket(NioServerSocketPipelineSink.java:137) 
at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.eventSunk(NioServerSocketPipelineSink.java:76) 
at org.jboss.netty.handler.codec.oneone.OneToOneEncoder.handleDownstream(OneToOneEncoder.java:68) 
at org.jboss.netty.channel.Channels.write(Channels.java:611) 
at org.jboss.netty.channel.Channels.write(Channels.java:578) 
at org.jboss.netty.channel.AbstractChannel.write(AbstractChannel.java:251) 

Может кто-нибудь, пожалуйста, помогите мне.

ответ

3

В вашем конвейере установлены следующие настройки?

pipeline.addLast("chunkedWriter", new ChunkedWriteHandler()); 

См. https://github.com/netty/netty/blob/master/example/src/main/java/io/netty/example/http/file/HttpStaticFileServerPipelineFactory.java.

+0

Спасибо! Это сработало! –

+1

Прохладный. Не могли бы вы отметить этот вопрос, как ответили. Благодарю. – Veebs

 Смежные вопросы

  • Нет связанных вопросов^_^