pubnub
Version:
Publish & Subscribe Real-time Messaging with PubNub
72 lines (64 loc) • 1.82 kB
text/typescript
import { HeartbeatRequest } from '../heartbeat-request';
import { SubscriptionStateInvalidateEvent } from './subscription-state-event';
/**
* Type with events which is dispatched by heartbeat state in response to client-provided requests and PubNub
* client state change.
*/
export enum HeartbeatStateEvent {
/**
* Heartbeat state ready to send another heartbeat.
*/
Heartbeat = 'heartbeat',
/**
* Heartbeat state has been invalidated after all clients' state was removed from it.
*/
Invalidated = 'invalidated',
}
/**
* Dispatched by heartbeat state when new heartbeat can be sent.
*/
export class HeartbeatStateHeartbeatEvent extends CustomEvent<HeartbeatRequest> {
/**
* Create heartbeat state heartbeat event.
*
* @param request - Aggregated heartbeat request which can be sent.
*/
constructor(request: HeartbeatRequest) {
super(HeartbeatStateEvent.Heartbeat, { detail: request });
}
/**
* Retrieve aggregated heartbeat request which can be sent.
*
* @returns Aggregated heartbeat request which can be sent.
*/
get request() {
return this.detail;
}
/**
* Create clone of heartbeat event to make it possible to forward event upstream.
*
* @returns Client heartbeat event.
*/
clone() {
return new HeartbeatStateHeartbeatEvent(this.request);
}
}
/**
* Dispatched by heartbeat state when it has been invalidated.
*/
export class HeartbeatStateInvalidateEvent extends CustomEvent<object> {
/**
* Create heartbeat state invalidation event.
*/
constructor() {
super(HeartbeatStateEvent.Invalidated);
}
/**
* Create clone of invalidate event to make it possible to forward event upstream.
*
* @returns Client invalidate event.
*/
clone() {
return new HeartbeatStateInvalidateEvent();
}
}