mình có xem qua vài bài giới thiệu về http2 và ưu điểm của nó so với http1
https://cabulous.medium.com/http-2-and-how-it-works-9f645458e4b2
mình thấy họ nói http2 sẽ thay vì mỗi request sẽ tạo 1 kết nối đến server, thì nó sẽ chỉ tạo 1 kết nối, và các request-response sẽ sử dụng chung cái kết nối này, và nó sẽ tạo ra các ID để những request-response này map đúng với nhau khi gửi và nhận dữ liệu, về lý thuyết là vậy, nhưng mình thắc mắc thực sự nó hoạt động thế nào?
mình có lên github tìm 1 vài cái project demo dùng http2 để request và response, thì chỉ thấy nó viết sẳn lib cho mình sài nên ko biết thực sự nó hoạt động ra sao bên trong
nên mình tự suy diễn thế này:
giả sử ở phía client sẽ sử dụng lib của bên thứ 3 như 1 service để thực hiện việc gửi request và nhận response
ở client sẽ dùng multi thread để tạo 2 luồng chạy 2 command, nhưng 2 luồng này sài chung 1 connection do service kia tạo ra, nên chỗ này mình có 1 thắc mắc, có phải mỗi command kia sẽ được service tạo 1 ID, rồi sau này có response thì nó sẽ dựa vào ID này để trả về response cho đúng command ko?
chỗ này giả sử về mặt code thì mình sẽ viết thế nào nhỉ ? dùng 1 design pattern kiểu observer, để khi có sự kiện response là mình call các hàm của các observer đã đăng kí, để trả về response cho đúng command ?