HTTP/2
O HTTP/2 é uma evolução do protocolo HTTP 1.1; basicamente tenta
ser mais eficiente ao usar redes. A semântica é a mesma, portanto é
projetado para ser compatível com protocolos antigos.
HTTP 1.1 Limitations
HTTP 1.1 é limitado a processar uma requisição por conexão, então geralmente
os clientes utilizam mais de uma conexão para solicitar arquivos dos servidores. Mas
isso gera um problema, porque quando há muitas conexões TCP abertas,
há uma disputa entre os clientes para utilizar os recursos do servidor e o desempenho
fica cada vez menor à medida que mais clientes conectam aos servidores.
Recursos principais
- HTTP/2 é um protocolo binário (lembre-se de
que HTTP 1.1 é um protocolo de texto).
- HTTP/2 funciona sobre TLS e ALPN.
- É multiplexado (permite que você envie mais
de uma requisição sobre uma única Conexão TCP).
- O servidor pode fazer push de respostas aos clientes.
- Reduz os Round Trip Times, de modo que os clientes possam
carregar mais rapidamente.
O HTTP/2 introduz outras melhorias, mais detalhes: RFC7540.
HTTP/2 requer nossa versão personalizada do Indy porque
ele requer o protocolo ALPN.
Componentes
- TsgcHTTP2Client: componente cliente que suporta totalmente o protocolo HTTP/2
(sgcWebSockets 100% código Pascal, sem bibliotecas externas).
- TsgcWebSocketHTTPServer:
componente de servidor que suporta totalmente o protocolo HTTP/2 (código sgcWebSockets
100% Pascal, sem bibliotecas externas). Por padrão, o HTTP/2 está
desabilitado; você pode habilitá-lo utilizando a propriedade HTTPOptions e definindo Enable
= true.
- TsgcWebSocketServer_HTTPAPI:
componente de servidor que suporta o protocolo HTTP/2 (implementação Microsoft
e requer Windows 2016+ ou Windows 10+).
- Servidores
DataSnap: o servidor datasnap também pode suportar o protocolo HTTP/2.
APIs
- Apple
Push Notifications: envia
notificações voltadas ao usuário para o dispositivo do usuário a partir de um provedor de servidor.