const http = require('http'); const { Server } = require('socket.io'); const express = require('express'); const MongoClient = require('mongodb').MongoClient; const app = express(); const server = http.createServer(app); const io = new Server(server); app.get('/', (req, res) => { res.sendFile(__dirname + '/bootstrapRowsCols.html'); }); const uri = "mongodb://siteRootAdmin:b23258585@x8664Arch.yushei.com.tw:27017,hc4Jammy.yushei.com.tw:27017,n2Jammy.yushei.com.tw:27017/YuSheiDBTest?replicaSet=odroid01&authSource=admin"; // "mongodb+srv://siteRootAdmin:b23258585@inLaneCatch.yushei.com.tw/YuSheiDBTest?replicaSet=odroid01&authSource=admin&tls=false" const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true }); async function start() { await client.connect(); const adminDb = client.db('admin'); // Connect to the admin database const db = client.db('YuSheiDBTest'); const collection = db.collection('inLaneCapped'); const changeStream = collection.watch(); setInterval(async () => { try { const log = await adminDb.command({ replSetGetStatus: 1 }); // Execute against admin database // console.log("what is in log at line 28", log); let simpleLog = []; // console.log("What is log.members[0]", log.members[0]); for (let i = 0; i < log.members.length; i++){ // console.log("_id: ", log[i]._id, "name: ", log[i].name, "health: ", log[i].health, "state: ", log[i].state, "stateStr: ", log[i].stateStr); simpleLog[i] = { "_id": log.members[i]._id, "name": log.members[i].name, "health": log.members[i].health, "state": log.members[i].state, "stateStr": log.members[i].stateStr } } console.log('\n'); // console.log("simpleLog just log", simpleLog); // console.table does not work here! // console.table("simpleLog Table", simpleLog); console.log(" _id | name | health | state | stateStr "); console.log("--------------------------------------------------------------------------"); simpleLog.forEach(member => { console.log(` ${String(member._id).padEnd(3)} | ${String(member.name).padEnd(35)} | ${String(member.health).padEnd(3)} | ${String(member.state).padEnd(3)} | ${member.stateStr}`); }); console.log(Date().toLocaleString()); io.emit('replicationStatus', simpleLog); // console.log('Replication Status:', simpleLog); } catch (error) { console.error('Error fetching replication status:', error); } }, 60000); // Fetch replication status every minutes 1 seconds=1000 changeStream.on('change', (change) => { io.emit('change', change); if (change.operationType === 'insert') { const { _id, plateText, cameraSource, inTime, inCarJpg } = change.fullDocument; console.log(`Change ID: ${_id}`); console.log(`plateText: ${plateText}`); console.log(`camerSource: ${cameraSource}`); console.log(`inTime: ${inTime}`); } }); // HighPorts ,TCP/43000-48500 defined in munetaka.me server.listen(48599, () => { console.log('Server is listening on port 48599'); }); } start().catch(console.error);