Я пытаюсь написать кометную потоковую передачу HTTP на основе JAVA. Я использую Apache httpClient 4.x для этого. Так как это потоковая передача кометы HTTP, все события поступают клиенту в виде фрагментированных данных. Поскольку соединение может оставаться открытым в течение длительного времени, я пытаюсь реализовать динамическую настройку SO_TIMEOUT после некоторых данных readLine () с сервера.
Когда я устанавливаю значение для SO_TIMEOUT после readLine из BufferedInputStream, оно не вступает в силу, оно все еще использует исходное значение SO_TIMEOUT, установленное до вызова метода execute ().
Ниже приводится определение SO_TIMEOUT с веб-сайта apache:
Определяет время ожидания сокета (SO_TIMEOUT) в миллисекундах, которое является временем ожидания для ожидания данных или, другими словами, максимальным периодом бездействия между двумя последовательными пакетами данных). Значение времени ожидания, равное нулю, интерпретируется как бесконечное время ожидания.
В соответствии с приведенным выше определением значение SO_TIMEOUT должно сбрасываться httpclient apache при поступлении всех порций данных. Если это так, он должен принять мое новое значение SO_TIMEOUT. Любая идея о том, как я могу установить значение SO_TIMEOUT после прочтения нескольких строк формы BufferedInputStream?