const express = require('express'); const WebSocket = require('ws'); const http = require('http'); const app = express(); const server = http.createServer(app); const wss = new WebSocket.Server({ server, path: '/counter-ws' }); let counter = 0; // In-memory counter (resets on server restart) app.use(express.json()); // API endpoint to get current counter value app.get('/api/counter', (req, res) => { res.json({ value: counter }); }); // API endpoint to increment counter app.post('/api/counter/increment', (req, res) => { counter += 1; res.json({ value: counter }); // Broadcast update to all connected WebSocket clients wss.clients.forEach(client => { if (client.readyState === WebSocket.OPEN) { client.send(JSON.stringify({ type: 'counter-update', value: counter })); } }); }); // WebSocket connection handling wss.on('connection', (ws) => { console.log('Client connected'); ws.on('message', (message) => { console.log('Received:', Buffer.from(message).toString()); }); ws.on('error', (error) => { console.log('WebSocket error:', error); }); ws.on('close', (code, reason) => { console.log('Client disconnected', 'Code:', code, 'Reason:', reason.toString()); }); }); const PORT = 3001; // API and WebSocket server port server.listen(PORT, '127.0.0.1', () => { console.log(`Server running on http://127.0.0.1:${PORT}`); });