Как проверить Http / 2 через ohttp?

1

По умолчанию Ohttp использует протокол h2, если домен поддерживает его. Цель состоит в том, чтобы как-то определить, что если домен находится на h2 и okhttp по умолчанию на h2, как разработчик может получить подтверждение того, что все вызовы мультиплексируются и идут по одному TCP-соединению? Я попытался использовать CustomEventListener как предложено Джесси Уилсоном. Тем не менее, я не могу получить 100% подтверждение. Пытался получить информацию о соединении

'''@Override
public void connectionAcquired(Call call, Connection connection) {
    logWithTime("connectionAcquired: " + connection);
}
'''

Объект соединения дает адрес Route, порт, прокси, socketAddress, объединенный с cipherSuit и протоколом. Хотя протокол h2, как показывает объект соединения, я хочу знать, что соединения на самом деле мультиплексированы и проходят через одно соединение. Там нет информации об идентификаторах подключения или что-либо, что подтверждает то же самое. Просьба предложить. Пример журнала: [7 мс] connectionAcquired: Connection { http://api.hotstar.com:443, прокси = DIRECT hostAddress = http://api.hotstar.com/106.51.146.149:443… cipherSuite = TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 = h2 }

Теги:
http2
okhttp
okhttp3

1 ответ

1
Лучший ответ

Попробуйте распечатать идентификационный хеш-код соединения. Если соединения разные, они будут иметь разные значения.

public void connectionAcquired(Call call, Connection connection) {
  logWithTime("connectionAcquired: " + System.identityHashCode(connection));
}
  • 0
    Спасибо, Джесс. Я думаю, что эта информация должна быть документирована где-то на официальном документе Okhttp.
  • 0
    Вот что такое вопрос StackOverflow!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню