codekingpro/portable-devtools
114k
1/////////////////////////////////////////////////////////////2//3// pgAdmin 4 - PostgreSQL Tools4//5// Copyright (C) 2013 - 2024, The pgAdmin Development Team6// This software is released under the PostgreSQL Licence7//8//////////////////////////////////////////////////////////////9 10import gettext from 'sources/gettext';11import url_for from 'sources/url_for';12import getApiInstance from '../../../static/js/api_instance';13import pgAdmin from 'sources/pgadmin';14 15const axiosApi = getApiInstance();16let HEARTBEAT_TIMEOUT = pgAdmin.heartbeat_timeout * 1000;17 18export function send_heartbeat(_server_id, _item) {19 20 // Send heartbeat to the server every 30 seconds21 _item.heartbeat = setInterval(function() {22 axiosApi.post(url_for('misc.log_heartbeat'), {'sid': _server_id})23 .then((data) => {24 if (data.status !== 200) {25 stop_heartbeat(_item);26 }27 })28 .catch((error) => {29 if (error && error.message == 'Network Error') {30 pgAdmin.Browser.notifier.error(gettext(`pgAdmin server not responding, try to login again: ${error.message || error.response.data.errormsg}`));31 } else {32 pgAdmin.Browser.notifier.error(gettext(`Server heartbeat logging error: ${error.message || error.response.data.errormsg}`));33 }34 stop_heartbeat(_item);35 });36 37 }, HEARTBEAT_TIMEOUT);38}39 40 41export function stop_heartbeat(_obj) {42 let _item = _obj.item || _obj,43 _id = _item.getMetadata('data')._id;44 clearInterval(_item.heartbeat);45 axiosApi.post(url_for('misc.stop_heartbeat'), {'sid': _id});46}47 