Идентификатор потока HTTP / 2 имеет длину 31 бит, что означает, что у вас может быть 2 ^ 32 - 1 идентификатор потока, нечетные из которых предназначены для инициированного клиента и даже для инициированного сервера.Это 2 147 483 647 сообщений, которые можно отправить до того, как исчерпаны идентификаторы потоков.
Действительно ли вы отправляете более 2 миллиардов (не миллиардов США!) Сообщений несколько раз в день, что будет означать, что вы достигнете этого предела?Если это так, я не уверен, что HTTP - лучший протокол для вас, и вам лучше всего придерживаться веб-сокетов.HTTP добавляет накладные расходы с заголовками HTTP, что означает, что он не оптимален для небольших, частых сообщений.
В любом случае, чтобы ответить на ваш вопрос, спецификация HTTP / 2 может сказать следующее:
Идентификаторы потока нельзя использовать повторно.Долгоживущие соединения могут привести к тому, что конечная точка исчерпает доступный диапазон идентификаторов потока.Клиент, который не может установить новый идентификатор потока, может установить новое соединение для новых потоков.Сервер, который не может установить новый идентификатор потока, может отправить кадр GOAWAY, чтобы клиент был вынужден открыть новое соединение для новых потоков.
Таким образом, в основном вы должны кодировать клиент и серверчтобы справиться с этим, и клиент должен автоматически запустить новый поток, когда он не может увеличить идентификатор потока.Это не означает, что оно должно разрушить старое соединение до тех пор, пока не будут даны ответы на все сообщения в полете - может быть два соединения в течение периода времени.Если это невозможно, я бы предложил клиенту или серверу заблаговременно закрывать соединение по мере приближения лимита, и новые сообщения помещаются в очередь до тех пор, пока соединение не будет закрыто, а затем не будет установлено новое сообщение.