codekingpro/portable-devtools
115k
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//////////////////////////////////////////////////////////////9import { io } from 'socketio';10import gettext from 'sources/gettext';11import url_for from 'sources/url_for';12 13export function openSocket(namespace, options) {14 return new Promise((resolve, reject)=>{15 const socketObj = io(namespace, {16 path: `${url_for('pgadmin.root')}/socket.io`,17 pingTimeout: 120000,18 pingInterval: 25000,19 ...options,20 });21 22 /* Once the object is created, connect event is emitted.23 Backend must implement connect and emit connected on success,24 connect_error on failure.25 */26 socketObj.on('connected', ()=>{27 resolve(socketObj);28 });29 socketObj.on('connect_error', (err)=>{30 reject(err);31 });32 socketObj.on('disconnect', (err)=>{33 reject(err);34 });35 });36}37 38export function socketApiGet(socket, endpoint, params) {39 return new Promise((resolve, reject)=>{40 socket.emit(endpoint, params);41 socket.on(`${endpoint}_success`, (data)=>{42 resolve(data);43 });44 socket.on(`${endpoint}_failed`, (data)=>{45 reject(data);46 });47 socket.on('disconnect', ()=>{48 reject(gettext('Connection to pgAdmin server has been lost'));49 });50 });51}52 