7

Câu hỏi này, như bạn có thể đã suy ra từ tiêu đề, thực sự là hai câu hỏi trong một câu hỏi.Tôi có phải sử dụng HTTP/2.0 để gửi Thông báo đẩy của Apple không? Tôi có thể sử dụng libcurl không?

Câu hỏi đầu tiên: Tôi có phải sử dụng HTTP/2.0 để gửi Thông báo đẩy của Apple không?

Trên APNs Provider API documentation cung cấp bởi Apple, đoạn mở đầu xác định

API này được dựa trên giao thức mạng HTTP/2.

Có một số tham chiếu khác tới HTTP/2.0 trong suốt tài liệu. Tuy nhiên tôi không nhìn thấy (không phải là để nói nó không có) bất cứ điều gì chỉ định rằng HTTP/2.0 phải được sử dụng. Điều này có nghĩa là tôi được phép sử dụng bất kỳ phiên bản HTTP nào không? Hay tôi thực sự bị ràng buộc với HTTP/2.0?

Tôi rất quen thuộc với HTTP/1.1 nhưng tôi biết hầu như không có gì về HTTP/2.0, vì vậy nếu tôi có thể sử dụng giao thức quen thuộc cũ của tôi, tôi sẽ thích điều đó.

Câu hỏi thứ hai (dựa trên câu hỏi đầu tiên): Tôi có thể sử dụng libcurl với APN không?

Câu hỏi này chỉ phù hợp với câu trả lời khẳng định cho câu hỏi đầu tiên. Nếu không đúng là tôi phải sử dụng HTTP/2.0 với APN thì tôi đã biết rằng tôi có thể sử dụng libcurl.

Tôi sẽ gửi nhiều APN từ một máy chủ đã bận và tôi muốn thực hiện nó một cách tự nhiên - do đó tôi định sử dụng libcurl nếu có thể. Tuy nhiên tôi hiểu rằng libcurl có phần hạn chế khi nói đến HTTP/2.0.

Vấn đề chính là khi libcurl tạo kết nối HTTP/2.0, nó thực sự bắt đầu với yêu cầu HTTP/1.1 bao gồm tiêu đề upgrade và sau đó đợi dòng trạng thái 101 Switching Protocols. Hành vi này có được hỗ trợ với APN không? Hoặc tôi phải cố gắng sử dụng một cái gì đó như nghttp2?

Tôi nhận thấy rằng nghttp2 hơi phức tạp và rất không được ghi nhận tài liệu vào lúc này. Tôi lo lắng rằng nếu tôi không thể sử dụng libcurl tôi có thể sẽ phải thực hiện HTTP/2.0 trên của riêng tôi bằng cách sử dụng ổ cắm (đó sẽ là WORST).

Bất kỳ trợ giúp nào được đánh giá cao cho một trong hai câu hỏi! Cám ơn mọi người!

+0

curl dòng lệnh phù hợp với trường hợp này với HTTP/2. Chỉ cần sử dụng tùy chọn --http2 và url https: //. Vì vậy, phải có cách để bạn có thể thực hiện libcurl cũng như vậy. – dsign

+0

HTTP/2 được thực hiện qua URL HTTP: // bình thường, nơi chúng tôi không biết phiên bản nào nói được thường được thực hiện với Nâng cấp: HTTPS: // được thực hiện khác nhau. libcurl _will_ cuối cùng cũng nhận được hỗ trợ HTTP2 kiến ​​thức trước và bạn được chào đón để giúp chúng tôi triển khai nó. –

+0

@DanielStenberg Tôi thực sự muốn được giúp đỡ. Nghe vui đó. Làm thế nào tôi có thể tham gia? –

Trả lời

6

OK sau một thời gian dài tôi cuối cùng đã tìm thấy câu trả lời. Có, HTTP/2 là yêu cầu để sử dụng APNS.

Nó đi xuống đến một dòng duy nhất trong the APNS docs nói rằng

APN yêu cầu sử dụng HPACK (nén header cho HTTP/2), trong đó ngăn chặn lặp đi lặp lại phím tiêu đề và giá trị.

có nghĩa là HTTP/2 là một phần bắt buộc của giao thức.

3

Hiện tại, Apple vẫn hỗ trợ API v2 (nhị phân) kế thừa, hoạt động trên HTTPS, vì vậy HTTP/2 chỉ bắt buộc nếu bạn muốn sử dụng API mới nhất.

API cũ được ghi lại trong phụ lục, nhưng thành thật, so với API HTTP/2, điều đó thật khủng khiếp đến nỗi tôi không thể khuyên bạn nên sử dụng nó.

Tôi có thể chắc chắn rằng API cũ được hỗ trợ vì tôi có mã sản xuất đang sử dụng ngay bây giờ (đây cũng là lý do tại sao tôi có thể nói API là khủng khiếp và tôi đang bận chuyển sang HTTP/2) .

+0

Bạn có chuyển sang HTTP mới/2 API? Nếu có thì vui lòng cho tôi hỏi một số câu hỏi về điều đó. Tôi cũng làm như vậy – RamshaS

Các vấn đề liên quan