HeartBeat.js 717 B

123456789101112131415161718192021222324252627
  1. export default class Heartbeat {
  2. constructor(e) {
  3. E(this, '_interval', null);
  4. E(this, 'ping', () => {
  5. const e = Date.now().toString();
  6. this.handler.ping(e);
  7. });
  8. this.handler = e;
  9. }
  10. ping() {
  11. const e = Date.now().toString();
  12. this.handler.ping(e);
  13. }
  14. start() {
  15. this.stop(),
  16. logger.debug(`Setting ping interval to ${PING_INTERVAL_MS}ms`),
  17. (this._interval = window.setInterval(this.ping, PING_INTERVAL_MS));
  18. }
  19. stop() {
  20. logger.debug('stop heartbeat'),
  21. this._interval && window.clearInterval(this._interval);
  22. }
  23. pong(e, t) {
  24. !e ||
  25. (typeof e == 'string' && this.handler.pong(Date.now() - Number(e), t));
  26. }
  27. }