Files
School/Anul 3/Semestrul 1/Mobile Applications/server.js
T
2025-02-06 20:33:26 +02:00

112 lines
2.7 KiB
JavaScript

const express = require('express');
const http = require('http');
const mysql = require('mysql');
const bodyParser = require('body-parser');
const cors = require('cors')
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });
const app = express();
app.use(cors())
const server = http.createServer(app);
app.use(bodyParser.json());
// MySQL connection
const db = mysql.createConnection({
host: 'localhost',
port: 3306,
user: 'root',
database: 'mobile'
});
db.connect(err => {
if (err) {
console.error('Database connection failed:', err.stack);
return;
}
console.log('Connected to database.');
});
app.get('/', (req, res) => {
res.status(200).end();
});
// CRUD routes
app.get('/drug', (req, res) => {
db.query('SELECT * FROM drug', (err, results) => {
if (err) throw err;
res.json(results);
});
});
app.post('/drug', (req, res) => {
const newItem = req.body;
delete newItem.id;
db.query('INSERT INTO drug SET ?', newItem, (err, result) => {
if (err) throw err;
emit('itemAdded', { id: parseInt(result.insertId), ...newItem });
res.status(201).json({ id: parseInt(result.insertId), ...newItem });
});
});
app.put('/drug', (req, res) => {
const updatedItem = req.body;
const id = parseInt(req.query.id);
db.query('UPDATE drug SET ? WHERE id = ?', [updatedItem, id], (err) => {
if (err) throw err;
emit('itemUpdated', { id, ...updatedItem });
res.status(200).json({ id, ...updatedItem });
});
});
app.delete('/drug', (req, res) => {
const id = parseInt(req.query.id);
db.query('DELETE FROM drug WHERE id = ?', [id], (err) => {
if (err) throw err;
emit('itemDeleted', { id });
res.status(204).end();
});
});
// WebSocket connection
wss.on('connection', (socket) => {
console.log('New client connected');
socket.on('disconnect', () => {
console.log('Client disconnected');
});
socket.on('message', (message) => {
console.log('Message received:', message);
});
socket.on('close', () => {
console.log('Client disconnected');
});
socket.on('error', (err) => {
console.error('Error:', err);
});
});
wss.on('close', () => {
console.log('Client disconnected');
});
wss.on('error', (err) => {
console.error('Error:', err);
});
const emit = (event, data) => {
wss.clients.forEach(client => {
if (client.readyState === WebSocket.OPEN) {
client.send(JSON.stringify({ event, data }));
}
});
};
const PORT = process.env.PORT || 3000;
server.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});