Advanced Features
Connection Pooling
Reuse connections across requests to avoid repeated TLS handshakes:
using Nghttp2Wrapper
pool = ConnectionPool(max_per_host=6, idle_timeout=60.0)
# Connections are automatically acquired and released
resp1 = pool_get(pool, "https://nghttp2.org/")
resp2 = pool_get(pool, "https://nghttp2.org/page2") # reuses same connection
close(pool)Manual Acquire/Release
client = acquire(pool, "nghttp2.org")
resp = get(client, "/")
release(pool, client) # returns to pool for reuseHPACK Dynamic Table Inspection
d = HpackDeflater(8192)
println(dynamic_table_size(d)) # 8192
entries = inspect_dynamic_table(d)
close(d)Stream Priority
Set HTTP/2 stream priorities on requests:
priority = PrioritySpec(weight=32, exclusive=true)
# Priority can be passed to low-level submit functionsHTTP/2 Proxy Pattern
Forward requests between server and client sessions:
# In a server handler:
upstream = HTTP2Client("upstream-server.com")
server = HTTP2Server(8080) do req
forward_request(upstream, req)
endWebSocket over HTTP/2
Initiate WebSocket tunnels via Extended CONNECT (RFC 8441):
client = HTTP2Client("ws-server.com")
stream_id = websocket_connect(client, "/ws")
# Note: Requires server support for RFC 8441