Я сейчас работаю над проектом, где у меня есть веб-сервер. Я должен добавить возможность, чтобы для каждого запроса мне приходилось отправлять несколько запросов на другие серверы, получать ответы и отправлять результаты исходному клиенту. Эти серверы имеют высокую пропускную способность, поэтому меня беспокоило количество сокетов, а также скорость установки новых потоков / сокетов для отправки множества запросов через множество сокетов. Поэтому я начал думать, что наличие одного (или нескольких подключений), открытого для каждого клиента, поможет решить эту проблему. Я не был уверен, как постоянные соединения и повышение ASIO работали все же. Некоторые вопросы у меня были:
-Как я могу установить время жизни с помощью ASIO TCP сокетов.
-Могу ли я отправить несколько одновременных запросов через один сокет? Буду ли я сталкиваться с проблемой с порядком результатов (каждый результат должен иметь идентификатор, поэтому я имею в виду не порядок следования отправляемых результатов не в порядке, а порядок следования пакетов, если ответ более одного пакета, будет ли у меня проблема с порядком пакетов).
Все запросы являются запросами HTTP GET / POST, если это тоже имеет значение.
Любая информация в этой теме будет оценена. Благодарю.
Сокет TCP действует как поток данных, данные, которые вы пишете на одном конце, будут получены в том же порядке на другом конце. Вы можете отправить несколько запросов через один сокет, если ваш протокол может обработать это.
Вы упоминаете параллельные запросы, поэтому вы должны быть очень осторожны, чтобы не чередовать вызовы записи двух разных запросов. Если вы можете гарантировать, что каждый результат написан атомарно, то я не вижу проблем в использовании сокета для нескольких запросов (вы можете сделать это с помощью очереди ответов).
Вы можете установить стандартный сокет сохранить Вот.
Других решений пока нет …