2015-12-28 2 views
0

Я построил http-сервер, используя netty. Все хорошо, когда оно работает в моем mac, но когда я запускаю его в изображении докеров, ответ HTTP всегда усекается, когда он превышает 460k.http ответ получил усеченный в докер

В чем проблема? Пожалуйста помоги.

+0

Я использую Нетти 5.0.0alpha2. – spacedragon

+0

Отображение файла Docker и воспроизводимого теста может помочь. –

+0

Используете ли вы агрегатор для агрегирования ответа HTTP или нет? –

ответ

0

Вы используете агрегатор для агрегирования ответа HTTP или нет? Взгляните на исходный код HttpObjectDecoder. Он будет больше обрабатывать HTTP-ответ, независимо от того, является ли сообщение http само по себе кодированием передачи или нет.

Размер по умолчанию maxChunk равен 8k. И даже читаемых байтов достаточно, он будет его обрывать. см. код ниже:

`case READ_FIXED_LENGTH_CONTENT: { int readLimit = actualReadableBytes();

 // Check if the buffer is readable first as we use the readable byte count 
     // to create the HttpChunk. This is needed as otherwise we may end up with 
     // create a HttpChunk instance that contains an empty buffer and so is 
     // handled like it is the last HttpChunk. 
     // 
     // See https://github.com/netty/netty/issues/433 
     if (readLimit == 0) { 
      return; 
     } 

     int toRead = Math.min(readLimit, maxChunkSize); 
     if (toRead > chunkSize) { 
      toRead = (int) chunkSize; 
     } 
     ByteBuf content = readBytes(ctx.alloc(), buffer, toRead); 
     chunkSize -= toRead; 

`

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