Heartbeat.js 827 B

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