112 lines
2.7 KiB
JavaScript
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}`);
|
|
}); |