feat: implement WebSocket server for real-time sensor data handling and add sensor status update routes
This commit is contained in:
@@ -1,14 +1,59 @@
|
||||
const router = require('express').Router();
|
||||
const db = require('../store/db');
|
||||
const { query } = require('../store/redis');
|
||||
const { queryAll, query } = require('../store/redis');
|
||||
|
||||
router.get('/pendingtokens', (req, res) => {
|
||||
router.get('/', async (req, res) => {
|
||||
try {
|
||||
const keys = await queryAll('sensors');
|
||||
const sessions = {};
|
||||
for (const key of keys) {
|
||||
const name = key.replace('sensors:', '');
|
||||
const info = await query(name, 'sensors');
|
||||
sessions[name] = {
|
||||
name,
|
||||
connectedAt: info.timestamp || null,
|
||||
session: info.session || null,
|
||||
status: info.status || 'unknown',
|
||||
};
|
||||
}
|
||||
res.json(sessions);
|
||||
} catch (err) {
|
||||
console.error('Error fetching sessions', err);
|
||||
res.status(500).json({ error: 'internal server error' });
|
||||
}
|
||||
});
|
||||
|
||||
router.get('/pending', (req, res) => {
|
||||
try {
|
||||
const pendingTokens = queryAll('snsr_pending_token');
|
||||
res.json(pendingTokens);
|
||||
} catch (err) {
|
||||
console.error('Error fetching pending tokens', err);
|
||||
res.status(500).json({ error: 'internal server error' });
|
||||
res.status(500).json({ error: `Error fetching pending tokens, ${err}` });
|
||||
}
|
||||
});
|
||||
|
||||
router.get('/connected', (req, res) => {
|
||||
try {
|
||||
const connectedSensors = queryAll('snsr_connected');
|
||||
res.json(connectedSensors);
|
||||
} catch (err) {
|
||||
console.error('Error fetching connected sensors', err);
|
||||
res.status(500).json({ error: `Error fetching connected sensors, ${err}` });
|
||||
}
|
||||
});
|
||||
|
||||
router.get('/connected/:id', async (req, res) => {
|
||||
const { id } = req.params;
|
||||
try {
|
||||
const sensor = await query(`snsr_connected:${id}`);
|
||||
if (!sensor) {
|
||||
return res.status(404).json({ error: 'sensor not connected' });
|
||||
}
|
||||
res.json({ id, name: sensor });
|
||||
} catch (err) {
|
||||
console.error('Error fetching sensor connection status', err);
|
||||
res.status(500).json({ error: `Error fetching sensor connection status, ${err}` });
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user