【发布时间】:2022-01-12 05:48:29
【问题描述】:
下面的代码在 Postgres 服务器关闭时有效。在它回来并且套接字可用后,请查看多个连接。通常在 js 的干净启动时它只显示一个连接,在重新连接时我有时会看到超过 5 个。 任何想法为什么?
var express = require('express');
const app = express();
const fs = require("fs-extra");
const bodyParser = require('body-parser');
const R = require('ramda');
require ('dotenv').config();
var reconnectLoop = 0;
var sleepInterval = 0;
var pg = require('pg');
const pool = {
user: process.env.DB_USER,
host: process.env.DB_SERVER,
database: process.env.DB_NAMESPACE,
password: process.env.DB_PASSWORD,
port: process.env.DB_PORT,
max: 1,
connectionTimeoutMillis: 2000
};
let date_ob = new Date();
// current date
// adjust 0 before single digit date
let date = ("0" + date_ob.getDate()).slice(-2);
// current month
let month = ("0" + (date_ob.getMonth() + 1)).slice(-2);
// current year
let year = date_ob.getFullYear();
// current hours
let hours = date_ob.getHours();
// current minutes
let minutes = date_ob.getMinutes();
// current seconds
let seconds = date_ob.getSeconds();
let client;
const postgresDBConnect = () => {
const startedAt = new Date().getTime();
client = new pg.Client(pool)
client.on('error', (err) => {
console.log('startedAt:-', startedAt);
console.log('crashedAt:-', new Date().getTime());
//Reconnect
reconnectLoop = reconnectLoop + 1;
sleepInterval = reconnectLoop * 1000;
console.log('Trying Reconnect1' + ' Sleep Timeout ' + sleepInterval);
setTimeout(postgresDBConnect,sleepInterval);
});
client.connect(err => {
if (err) {
console.error('Connection issue:', err.stack)
reconnectLoop = reconnectLoop + 1
sleepInterval = 1000 * reconnectLoop
console.log('Trying Reconnect2' + '. Sleep Timeout ' + sleepInterval)
setTimeout(postgresDBConnect,sleepInterval)
} else {
console.log('Connected to Postgres Server')
}
});
};
console.log('Starting UP Postgres Connection');
postgresDBConnect();
var user = {}
app.use(bodyParser.json());
app.post('/post-test', (req, res) => {
console.log('Got body:', req.body);
res.sendStatus(200);
});
app.post('/insertactivity', function (req, res) {
console.log('InsertActivity, Got body:', req.body);
res.sendStatus(200);
var string = JSON.stringify(req.body);
var objectValue = JSON.parse(string);
console.log('currenttime:',objectValue["domain_activity"]["currenttime"]);
console.log('username:',objectValue["domain_activity"]["username"]);
console.log('domain:',objectValue["domain_activity"]["domain"]);
console.log('computer:',objectValue["domain_activity"]["computer"]);
console.log('ipaddr:',objectValue["domain_activity"]["ipaddr"]);
console.log('action:',objectValue["domain_activity"]["action"]);
console.log('macaddr:',objectValue["domain_activity"]["macaddr"]);
console.log('uuid:',objectValue["domain_activity"]["uuid"]);
objdata1 = objectValue["domain_activity"]["currenttime"];
objdata2 = objectValue["domain_activity"]["username"];
objdata3 = objectValue["domain_activity"]["domain"];
objdata4 = objectValue["domain_activity"]["computer"];
objdata5 = objectValue["domain_activity"]["ipaddr"];
objdata6 = objectValue["domain_activity"]["action"];
objdata7 = objectValue["domain_activity"]["macaddr"];
objdata8 = objectValue["domain_activity"]["uuid"];
client.query(`insert into public.authentication_activity (currenttime,username,domain,computer,ipaddr,action,macaddr,uuid) values (
'${objdata1}',
'${objdata2}',
'${objdata3}',
'${objdata4}',
'${objdata5}',
'${objdata6}',
'${objdata7}',
'${objdata8}')`).then(res => {
}).catch(err => {
console.log(err.stack);
})
//.finally(() => {
// client.end()
});
app.post('/updateactivity', function (req, res) {
console.log('UpdateActivity, Got body:', req.body);
res.sendStatus(200);
var string = JSON.stringify(req.body);
var objectValue = JSON.parse(string);
console.log('username:',objectValue["domain_activity"]["username"]);
console.log('uuid:',objectValue["domain_activity"]["uuid"]);
objdata9 = objectValue["domain_activity"]["username"];
objdata10 = objectValue["domain_activity"]["uuid"];
client.query(`select public.sessionduration ('${objdata9}','${objdata10}')`).then(res => {
}).catch(err => {
console.log(err.stack);
})
//.finally(() => {
// client.end()
});
var server = app.listen(8081, function () {
var host = server.address().address
var port = server.address().port
console.log("Server.js app listening at http://%s:%s", host, port)
})
// prints date & time in YYYY-MM-DD HH:MM:SS format
console.log(date + "/" + month + "/" + year + " " + hours + ":" + minutes + ":" + seconds);
【问题讨论】:
标签: postgresql pg