Diese Frage, wie Sie vielleicht aus dem Titel abgeleitet haben, ist wirklich zwei Fragen in einem.Muss ich HTTP/2.0 verwenden, um Apple Push-Benachrichtigungen zu senden? Darf ich libcurl benutzen?
Erste Frage: Muss ich HTTP/2.0 verwenden, um Apple Push Notifications zu senden?
Auf den APNs Provider API documentation von Apple zur Verfügung gestellt, gibt die Eröffnung Absatz
Diese API auf dem HTTP/2-Netzwerk-Protokoll basiert.
Es gibt mehrere andere Verweise auf HTTP/2.0 in der gesamten Dokumentation. Allerdings sehe ich nicht (was nicht zu sagen ist, dass es nicht da ist) irgendetwas, das angibt, dass HTTP/2.0 verwendet werden muss. Bedeutet das, dass ich irgendeine HTTP-Version verwenden darf? Oder bin ich tatsächlich auf HTTP/2.0 beschränkt?
Ich bin sehr vertraut mit HTTP/1.1, aber ich weiß fast nichts über HTTP/2.0, also wenn ich in der Lage bin, mein altes vertrautes Protokoll zu verwenden, würde ich das bevorzugen.
Zweite Frage (basierend auf der ersten Frage): Darf ich libcurl mit APNs verwenden?
Diese Frage ist nur relevant, wenn die erste Frage bejaht wird. Wenn es nicht wahr ist, dass ich HTTP/2.0 mit APNs verwenden muss, dann weiß ich bereits, dass ich libcurl verwenden kann.
Ich werde viele APNs von einem bereits ausgelasteten Server senden, und ich würde es lieber nativ machen - daher plane ich, wenn möglich, libcurl zu verwenden. Allerdings verstehe ich, dass libcurl etwas eingeschränkt ist, wenn es um HTTP/2.0 geht.
Das Hauptproblem ist, dass, wenn libcurl eine HTTP/2.0-Verbindung herstellt, es tatsächlich mit einer HTTP/1.1-Anfrage beginnt, die einen upgrade
-Header enthält und dann auf eine 101 Switching Protocols
Statuszeile wartet. Wird dieses Verhalten mit APNs unterstützt? Oder muss ich versuchen, etwas wie nghttp2 zu verwenden?
Ich habe festgestellt, dass nghttp2 ist etwas komplex und sehr schlecht dokumentiert im Moment. Ich bin besorgt, dass, wenn ich nicht libcurl verwenden kann, ich am Ende HTTP/2.0 auf eigene Faust mit Sockets (die DIE WORST wäre) implementieren würde.
Jede Hilfe wird für beide Fragen geschätzt! Dank euch allen!
curl die Befehlszeile ist gut für dieses Szenario mit HTTP/2. Verwenden Sie einfach die Option --http2 und und https: // url. Also, es muss einen Weg geben, auf dem Sie libcurl auch dazu bringen können, sich zu verhalten .... – dsign
HTTP/2 über eine normale HTTP: // URL, wo wir nicht wissen, welche Version es spricht, wird typischerweise mit Upgrade durchgeführt: HTTPS: // ist anders gemacht. libcurl _will_ erhält eventuell auch die vorherige HTTP2-Unterstützung und Sie können uns gerne bei der Implementierung helfen. –
@DanielStenberg Ich wäre eigentlich daran interessiert zu helfen. Das hört sich witzig an. Wie könnte ich mich engagieren? –