,

Building a Real-time Chat Application with React, Node.js, and Socket.io using Web Sockets and Vite.js

Posted by








React Chat con Nodejs y Socketio (Web Sockets y Vitejs)

React Chat con Nodejs y Socketio (Web Sockets y Vitejs)

En este artículo, vamos a explorar cómo construir un chat en tiempo real utilizando React, Nodejs, Socket.io y Vitejs.

Tecnologías Utilizadas

  • React: Una librería de JavaScript para construir interfaces de usuario.
  • Nodejs: Un entorno de ejecución de JavaScript del lado del servidor.
  • Socket.io: Una librería de JavaScript para comunicación en tiempo real.
  • Vitejs: Una herramienta de construcción y desarrollo de aplicaciones front-end.

Instalación y Configuración

Para comenzar, necesitaremos configurar un servidor Nodejs con Socket.io para gestionar la comunicación en tiempo real. También utilizaremos Vitejs para compilar y servir el cliente de React.

Primero, vamos a configurar el servidor Nodejs:

        
            // server.js
            const express = require('express');
            const http = require('http');
            const socketIo = require('socket.io');

            const app = express();
            const server = http.createServer(app);
            const io = socketIo(server);

            io.on('connection', (socket) => {
                console.log('Usuario conectado');
                socket.on('chat message', (msg) => {
                    io.emit('chat message', msg);
                });

                socket.on('disconnect', () => {
                    console.log('Usuario desconectado');
                });
            });

            server.listen(3001, () => {
                console.log('Servidor en ejecución en el puerto 3001');
            });
        
    

Luego, configuraremos el cliente de React utilizando Vitejs:

        
            // App.jsx
            import React, { useState, useEffect } from 'react';
            import io from 'socket.io-client';

            const socket = io('http://localhost:3001');

            function App() {
                const [messages, setMessages] = useState([]);
                const [message, setMessage] = useState('');

                useEffect(() => {
                    socket.on('chat message', (msg) => {
                        setMessages((prevMessages) => [...prevMessages, msg]);
                    });
                }, []);

                const sendMessage = () => {
                    socket.emit('chat message', message);
                    setMessage('');
                };

                return (
                    

Chat en tiempo real

{messages.map((msg, index) => (

{msg}

))}
setMessage(e.target.value)} />
); } export default App;

Ejecución del Proyecto

Una vez que hemos configurado el servidor Nodejs y el cliente de React, podemos ejecutar el proyecto. En la terminal, ejecutaremos los siguientes comandos:

        
            // Terminal
            // Instalar dependencias del servidor
            npm install express http socket.io

            // Instalar dependencias del cliente
            npm install react react-dom socket.io-client

            // Iniciar el servidor
            node server.js

            // Iniciar el cliente
            npm run dev
        
    

Con esto, tendremos un chat en tiempo real funcionando utilizando React, Nodejs y Socket.io. Ahora, los usuarios podrán enviar mensajes y recibir notificaciones en tiempo real.


0 0 votes
Article Rating
20 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Sixaxis87
7 months ago

apesar que esta app esta creada con vite el comando vite build no funciona…

Sixaxis87
7 months ago

Cuál sería el comando que debería usar para hacer el build y poder subirla algún hosting como heroku,render, netlify, vercel etc … lo digo porque el comando que está en package.json no crea build si no una carpeta que se la dist pero está incompleta.,, y otra pregunta en el frontend no deja hacer el build con el comando npm run –prefix frontend build… debería hacerlo en la carpeta raíz cierto ? Saludos

Sixaxis87
7 months ago

como podría subir este tipo de proyecto en render?? porque tiene front y server, habría algun problema o hay algun tipo de configuración especial¿?

Vladimir Rugama
7 months ago

Me interesaria que usariamos una db de mongodb 😄

vvalen
7 months ago

linda fatz!!!

Altair
7 months ago

y la contiuacion 😀 ?

Valentin Feller
7 months ago

la libreria socket tambien tiene para transmitir video (webcam). Para hacer un live streaming shopping ?

Desertpunk444
7 months ago

Gracias fazt gran tutorial!!!!

Luciano Costa
7 months ago

Hola esta el video de despliegue en miembro?

Johanna Apure Canónico
7 months ago

Hola!! Sabes como puedo pasar headers en la conexión desde el cliente?

syl_28
7 months ago

Excelente video, muy bacano lo de los sockets

Jesus Capera
7 months ago

Que buen contenido y que facil lo explicas todo, ya me suscribi a tu canal para seguir todos tus videos, seria genial con postgres y sequelize

Christopher Duran
7 months ago

Sin duda estoy esperando la versión con BD y MongoDB

Hol
Hol
7 months ago

Master 💀

mauricio valdora
7 months ago

Fantasticos tus videos FAZT ayer termine la aplicacion full stack de tareas y hoy hice este estoy aprendiendo mucho de tu contenido muchisimas gracias por tus videos

Michael
7 months ago

Jajaja no jodas, acabo de ver el anterior

Cristian Machuca
7 months ago

Hola! Te puedo preguntar que tema de VSC usas? Para que tenga esa interface tan oscura y las letras sobresalgan. Gracias por el video.!

EDWARD MELENDEZ MENDIGURE
7 months ago

Buen contenido, me gustaria que la comunidad pida proyectos mas reales como un clon de alguna aplicacion, siento que el canal se esta deteniendo con proyectos muy simples, pero como mencione es una opinion, asi que felicidades por esta aplicacion 😉👌

Jhon Jairo García Camacho
7 months ago

Como se puede hacer para que al momento de recibir un mensaje pueda llegar como un sonido tipo whatsapp así el usuario no tenga la espalda activa?

codigito 🍿 📼
7 months ago

Tomo asiento 🎉😊😊