123456789101112131415161718192021222324252627 |
- export default class Heartbeat {
- constructor(e) {
- E(this, '_interval', null);
- E(this, 'ping', () => {
- const e = Date.now().toString();
- this.handler.ping(e);
- });
- this.handler = e;
- }
- ping() {
- const e = Date.now().toString();
- this.handler.ping(e);
- }
- start() {
- this.stop(),
- logger.debug(`Setting ping interval to ${PING_INTERVAL_MS}ms`),
- (this._interval = window.setInterval(this.ping, PING_INTERVAL_MS));
- }
- stop() {
- logger.debug('stop heartbeat'),
- this._interval && window.clearInterval(this._interval);
- }
- pong(e, t) {
- !e ||
- (typeof e == 'string' && this.handler.pong(Date.now() - Number(e), t));
- }
- }
|