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.
apesar que esta app esta creada con vite el comando vite build no funciona…
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
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¿?
Me interesaria que usariamos una db de mongodb 😄
linda fatz!!!
y la contiuacion 😀 ?
la libreria socket tambien tiene para transmitir video (webcam). Para hacer un live streaming shopping ?
Gracias fazt gran tutorial!!!!
Hola esta el video de despliegue en miembro?
Hola!! Sabes como puedo pasar headers en la conexión desde el cliente?
Excelente video, muy bacano lo de los sockets
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
Sin duda estoy esperando la versión con BD y MongoDB
Master 💀
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
Jajaja no jodas, acabo de ver el anterior
Hola! Te puedo preguntar que tema de VSC usas? Para que tenga esa interface tan oscura y las letras sobresalgan. Gracias por el video.!
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 😉👌
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?
Tomo asiento 🎉😊😊