Class VapidTransport
java.lang.Object
com.iizix.server.push.engine.transport.VapidTransport
- All Implemented Interfaces:
IPushTransport
The Web Push transport: RFC 8030 request, RFC 8291 encryption, RFC 8292 VAPID authorization, over the Jetty client.
The subscription is the JSON the browser's PushSubscription.toJSON() produced, stored verbatim by /iizi-push/subscribe: endpoint, keys.p256dh, keys.auth. The application's key pair and subject come from its .iiziPush.
Status mapping, from RFC 8030 section 8 and the push services' practice: 201 (and 200, 202) delivered; 404 and 410 endpoint stale, prune it; 429 and 5xx transient, spool and honour Retry-After; 400, 401, 403, 413 permanent, the request or the credentials are wrong; a connection failure or timeout is transient.
- Author:
- Christopher Mindus
Constructor Summary
ConstructorsMethod Summary
Modifier and TypeMethodDescriptionvoiddispose()Releases the transport's resources.getKind()Gets the transport kind.Gets whether this transport can send for an application.send(SubscriptionRecord subscription, PushMessage message, long ttlMillis, DeliveryUrgency urgency) Sends a notification to one subscription.
Constructor Details
VapidTransport
Constructor.- Parameters:
client- The started Jetty client.configs- The application configurations.
Method Details
getKind
Description copied from interface:IPushTransportGets the transport kind.- Specified by:
getKindin interfaceIPushTransport- Returns:
- The kind.
getState
Description copied from interface:IPushTransportGets whether this transport can send for an application.- Specified by:
getStatein interfaceIPushTransport- Parameters:
appId- The application ID,*for iiziRun.- Returns:
- The state, never null.
send
public TransportResult send(SubscriptionRecord subscription, PushMessage message, long ttlMillis, DeliveryUrgency urgency) Description copied from interface:IPushTransportSends a notification to one subscription. Blocks the calling (virtual) thread until the push service has answered or the request timed out.- Specified by:
sendin interfaceIPushTransport- Parameters:
subscription- The subscription.message- The notification.ttlMillis- The effective time-to-live in milliseconds, already defaulted and clamped by the engine; converted to seconds at the header only.urgency- The effective urgency.- Returns:
- The result, never null; a failure is an outcome, never an exception.
dispose
public void dispose()Description copied from interface:IPushTransportReleases the transport's resources.- Specified by:
disposein interfaceIPushTransport