Skip to content
Snippets Groups Projects
index.js 2.53 KiB
Newer Older
import 'dotenv/config';
import {WebSocketServer} from "ws";
import HomeController from "./controllers/homeController.js";
import {sequelize} from "./db.js";
import { Home_entity, User } from "./models/index.js";

const PORT = process.env.PORT || 5000;

const users = new Set();

const wss = new WebSocketServer({
    port: PORT
}, () => console.log(`Started listen on port ${PORT}`))

wss.on('connection', (ws) => {
    users.add(ws);
    ws.id = Date.now();
    ws.on('message', async (req) => {
        req = JSON.parse(req);
        switch (req.event) {
            case 'getHomeEntities':
                const getHomeEntitiesData = await HomeController.getEntities();
                wss.clients.forEach((client) => {
                    client.send(JSON.stringify({event: 'getHomeEntities', data: getHomeEntitiesData}))
                });
                break;
            case 'createHomeEntity':
                const createdHomeEntity = await HomeController.createEntity(req);
                    wss.clients.forEach((client) => {
                    client.send(JSON.stringify({
                        event: 'createHomeEntity',
                        data: createdHomeEntity
                    }));
                });
                break;
            case 'editHomeEntity':
                const editedHomeEntity = await HomeController.editEntity(req);
                wss.clients.forEach((client) => {
                    client.send(JSON.stringify({
                        event: 'editHomeEntity',
                        data: editedHomeEntity
                    }));
                });
                break;
            case 'deleteHomeEntity':
                const deletedHomeEntity = await HomeController.deleteEntity(req);
                wss.clients.forEach((client) => {
                    client.send(JSON.stringify({
                        event: 'deleteHomeEntity',
                        data: deletedHomeEntity
                    }));
                });
                break;
            case 'changeOrderHomeEntity':
                await HomeController.changeOrderEntity(req);
                wss.clients.forEach((client) => {
                    client.send(JSON.stringify({
                        event: 'changeOrderHomeEntity',
                        data: {...req.body}
                    }));
                });
                break;
        }
    })
})

const start = async () => {
    try {
        await sequelize.authenticate();
        await sequelize.sync();
    } catch (error) {
        console.log(error)
    }
}

await start();