-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.js
71 lines (49 loc) · 1.99 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
const express = require("express");
const { Server: HttpServer } = require("http");
const { Server: Socket } = require("socket.io");
const ContenedorProductos = require("./src/class/Products");
const ContenedorMensajes = require("./src/class/Messages");
/* --------- Knex --------- */
const knexConfigMariaDB = require("./src/options/dbMariaDB");
const knexConfigSQLite = require("./src/options/dbSqlite3");
const knexProd = require("knex")(knexConfigMariaDB);
const knexChat = require("knex")(knexConfigSQLite);
/* --- Instancias ---- */
const manejadorProductos = new ContenedorProductos(knexProd, "productos");
const manejadorMensajes = new ContenedorMensajes(knexChat, "mensajes");
/* ------ Socket.io ------ */
const app = express();
const httpServer = new HttpServer(app);
const io = new Socket(httpServer);
// Configuración de socket
io.on("connection", async (socket) => {
console.log("Se conectó un nuevo cliente");
await manejadorProductos.createTable().catch((err) => {
console.log(err);
});
await manejadorMensajes.createTable().catch((err) => {
console.log(err);
});
// Productos
socket.emit("productos", await manejadorProductos.getAll());
socket.on("update", async (producto) => {
await manejadorProductos.save(producto);
io.sockets.emit("productos", await manejadorProductos.getAll());
});
// Mensajes
socket.emit("mensajes", await manejadorMensajes.getAll());
socket.on("new-message", async (mensaje) => {
mensaje.date = new Date().toLocaleString();
await manejadorMensajes.save(mensaje);
io.sockets.emit("mensajes", await manejadorMensajes.getAll());
});
});
/* ----------------------- */
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(express.static("public"));
const PORT = process.env.PORT || 8080;
const server = httpServer.listen(PORT, () =>
console.log(`Servidor http escuchando en el puerto ${server.address().port}`)
);
server.on("error", (error) => console.log(`Error en servidor ${error}`));