Descargar CV

Construye una app de chat en tiempo real con Node.js, Express, y MySQL: Tutorial completo

27 de abril de 2024

En este tutorial, te mostraré cómo construir una aplicación de chat en tiempo real utilizando Node.js, Express y MySQL. Este tipo de aplicaciones pueden ser increíblemente útiles para una amplia gama de propósitos, desde salas de chat comunitarias hasta sistemas de soporte al cliente. Vamos a construir este proyecto paso a paso para que puedas seguirlo sin importar tu nivel de experiencia.

Requisitos Previos

Antes de comenzar, asegúrate de tener instalado lo siguiente en tu sistema:

  • Node.js y npm (Node Package Manager)
  • MySQL
  • Un editor de código, como VSCode

Paso 1: Configuración del entorno de desarrollo

1. Crea una nueva carpeta para tu proyecto y navega a ella en tu terminal.

2. Inicia un nuevo proyecto de Node.js ejecutando:

    npm init -y
    

    3. Instala las dependencias necesarias:

    npm install express socket.io mysql
    

    Paso 2: Configuración de la base de datos MySQL

    1.Inicia sesión en tu servidor MySQL y crea una nueva base de datos:

    CREATE DATABASE chat_app;
    

    2. Crea una tabla para almacenar los mensajes:

    USE chat_app;
    CREATE TABLE messages (
        id INT AUTO_INCREMENT PRIMARY KEY,
        username VARCHAR(255),
        message TEXT,
        timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    );
    

    Paso 3: Creando el servidor con Express y Socket.io

    Crea un archivo llamado server.js y configura el servidor básico:

    const express = require('express');
    const http = require('http');
    const socketIo = require('socket.io');
    const mysql = require('mysql');
    
    const app = express();
    const server = http.createServer(app);
    const io = socketIo(server);
    
    const db = mysql.createConnection({
        host: 'localhost',
        user: 'tu_usuario',
        password: 'tu_contraseña',
        database: 'chat_app'
    });
    
    db.connect(err => {
        if (err) {
            return console.error('error: ' + err.message);
        }
        console.log('Conectado a la base de datos MySQL');
    });
    
    io.on('connection', (socket) => {
        console.log('Nuevo usuario conectado');
    
        socket.on('chat message', (msg) => {
            console.log('Mensaje: ' + msg);
            // Aquí agregarías el código para guardar el mensaje en MySQL
        });
    
        socket.on('disconnect', () => {
            console.log('Usuario desconectado');
        });
    });
    
    const PORT = process.env.PORT || 3000;
    server.listen(PORT, () => {
        console.log(`Servidor corriendo en puerto ${PORT}`);
    });
    
    

    Paso 4: Creando la interfaz de usuario

    Para hacer que nuestra aplicación de chat sea interactiva y fácil de usar, necesitamos crear una interfaz de usuario que permita a los usuarios enviar y recibir mensajes en tiempo real. Aquí te mostraré cómo construir una interfaz básica usando HTML, CSS y JavaScript.

    1.Crea un archivo index.html: Este será el archivo principal de nuestra interfaz de usuario. Aquí es donde los usuarios podrán ver los mensajes recibidos y enviar los suyos. Añade el siguiente código:

    <!DOCTYPE html>
    <html lang="es">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Chat en Tiempo Real</title>
        <link rel="stylesheet" href="styles.css">
    </head>
    <body>
        <div id="chat-container">
            <div id="chat-box">
                <ul id="messages"></ul>
            </div>
            <form id="form" action="">
                <input id="input" autocomplete="off" placeholder="Escribe un mensaje..." /><button>Enviar</button>
            </form>
        </div>
        <script src="https://cdn.socket.io/4.0.0/socket.io.min.js"></script>
        <script src="script.js"></script>
    </body>
    </html>
    
    

    2.Agrega estilos con CSS: Crea un archivo styles.css para mejorar la apariencia de tu chat. Por ejemplo:

    body {
        display: flex;
        justify-content: center;
        align-items: center;
        height: 100vh;
        background-color: #f0f0f0;
        margin: 0;
        font-family: Arial, sans-serif;
    }
    
    #chat-container {
        display: flex;
        flex-direction: column;
        width: 300px;
        background: white;
        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
    }
    
    #chat-box {
        height: 300px;
        overflow-y: scroll;
        padding: 10px;
        background: #e9e9e9;
    }
    
    #messages {
        list-style: none;
        padding: 0;
    }
    
    #messages li {
        padding: 8px 10px;
        border-radius: 20px;
        background-color: #dcf8c6;
        margin-bottom: 10px;
        width: fit-content;
    }
    
    form {
        display: flex;
        padding: 10px;
    }
    
    input {
        flex: 1;
        padding: 10px;
    }
    
    button {
        padding: 10px 20px;
        background-color: #007bff;
        border: none;
        color: white;
        cursor: pointer;
    }
    
    button:hover {
        background-color: #0056b3;
    }
    

    3.Implementa la funcionalidad de chat con JavaScript: Crea un archivo script.js para manejar los eventos del lado del cliente, como enviar y recibir mensajes. Aquí está el código básico para conectar con Socket.io y actualizar la interfaz cuando se reciban nuevos mensajes:

    var socket = io();
    
    var form = document.getElementById('form');
    var input = document.getElementById('input');
    
    form.addEventListener('submit', function(e) {
        e.preventDefault();
        if (input.value) {
            socket.emit('chat message', input.value);
            input.value = '';
        }
    });
    
    socket.on('chat message', function(msg) {
        var item = document.createElement('li');
        item.textContent = msg;
        document.getElementById('messages').appendChild(item);
        window.scrollTo(0, document.body.scrollHeight);
    });
    
    

    En este tutorial, has aprendido a crear una aplicación de chat en tiempo real utilizando Node.js, Express y MySQL. Hemos cubierto la configuración de tu entorno de desarrollo, la conexión con MySQL, la configuración del servidor con Express y Socket.io, y la creación de una interfaz de usuario básica.

    Espero que este tutorial te haya sido útil para comenzar a construir aplicaciones en tiempo real. ¡Feliz codificación!

    Posted in MySQL, NodeJS, Socket.io
    Write a comment