Cree una aplicación web de sala de chat con tecnología de Node.js

En este artículo, vamos a crear una aplicación web de sala de chat con Node.js. Una aplicación web de sala de chat se usa básicamente para crear una sala de chat similar a un chat grupal, donde los usuarios pueden venir y unirse al grupo/sala de chat, enviar mensajes a la sala de chat y ver los mensajes de otros usuarios.

Vamos a configurar un EJS de middleware. EJS facilita el envío de datos desde su archivo de servidor (app.js o server.js) a una página web. Después de eso, vamos a usar Body Parser mediante el cual podemos capturar los valores de entrada del usuario que son mensajes del cuadro de mensajes y almacenarlos en una colección. Luego vamos a enviar los datos de la colección a la sala de chat usando EJS para que otros usuarios puedan leerlos. 

Enfoque: A continuación se muestra la implementación paso a paso del enfoque anterior.

Paso 1: Configuración del proyecto

Inicializa NPM: cree y ubique la carpeta de su proyecto en la terminal y escriba el comando

npm init -y

Inicializa nuestra aplicación de Node y crea un archivo package.json.

Instale dependencias: ubique el directorio de su proyecto raíz en la terminal y escriba el comando

npm install express ejs body-parser

Para instalar Express, EJS y Body Parser como dependencias dentro de su proyecto

Crear archivo de servidor: cree un archivo ‘app.js’, dentro de este archivo se requiere el módulo Express y cree una ‘aplicación’ constante para crear una instancia del módulo express, luego configure el EJS como el motor de visualización predeterminado.

const express = require('express');
const app = express();

app.set('view engine', 'ejs');

Reorganice sus directorios: se requiere usar ‘.ejs’ como extensión para el archivo HTML en lugar de ‘.html’ para usar EJS dentro de él. Luego, debe mover todos los archivos ‘.ejs’ en el directorio de vistas dentro de su directorio raíz. EJS busca por defecto los archivos ‘.ejs’ dentro de la carpeta de vistas.

Use la variable EJS: dentro de su archivo .ejs actualizado , debe usar variables EJS para recibir valores de su archivo de servidor. Puede declarar variables en EJS como

<%= variableName %>

casa.ejs

HTML

<!DOCTYPE html>
<html>
  
<head>
    <title>Page Title</title>
</head>
  
<body>
    <%= variableName %>
</body>
  
</html>

Envíe datos a una variable: dentro de su archivo de servidor ( app.js o index.js ), puede enviar un archivo EJS junto con algunos datos utilizando el método de procesamiento.

app.get("/", (req, res) => {
    res.render("home", { variableName: "Hello World!" })
})

aplicación.js

Javascript

const express = require('express')
const app = express()
app.set('view engine', 'ejs')
  
app.get("/", (req, res) => {
     res.render("home", { variableName: "Hello World!" })
})
  
app.listen(3000, (req, res) => {
     console.log("App is running on port 3000")
})

Obtener datos del formulario a app.js: para recibir valores de entrada de un formulario, tenemos que usar un paquete de Nodes llamado body-parser.

Instale el analizador de cuerpo:

npm install body-parser

Requerir módulo analizador de cuerpo:

const bodyParser = require('body-parser')

Y entonces

app.use( bodyParser.json() );      
app.use(bodyParser.urlencoded({    
     extended: true
}))

Entonces podemos manejar los datos del formulario usando el objeto de solicitud.

Paso 2: Obtener usuarios actuales y sus mensajes: tenemos una serie de listas de usuarios predeterminados con sus mensajes. Enviemos la array a nuestra página web y mostremos la lista de usuarios predeterminados con sus mensajes. En el paso anterior, solo enviamos un valor a la variable, ahora estamos enviando la array completa.

aplicación.js

Javascript

const express = require('express')
const bodyParser = require('body-parser')
const users = [{
    userMessage: "Hi",
    userName: "Aditya Gupta"
}, {
    userMessage: "Hello",
    userName: "Vanshita Jaiswal"
}]
  
const app = express()
  
app.set('view engine', 'ejs')
  
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
    extended: true
}))
  
  
app.get("/", function (req, res) {
    res.render("home", {
        data: users
    })
})
  
app.listen(3000, (req, res) => {
    console.log("App is running on port 3000")
})

Dado que tenemos tantos elementos dentro de nuestra array y tenemos que imprimir cada uno de ellos, tenemos que usar For Each Loop para recorrer cada elemento dentro de nuestra colección y mostrar los detalles.

casa.ejs

HTML

<!DOCTYPE html>
<html>
  
<head>
    <title>ChatRoom</title>
  
    <style>
        h2{
            margin: 12px 0px 0px 0px;
            padding: 0px;
        }
        p{
            margin: 0px;
            padding: 0px;
        }
    </style>
</head>
    
<body>
    <h1>ChatRoom</h1>
    <% data.forEach(element=> { %>
    <h2><%= element.userMessage %></h2>
      
<p> <%= element.userName %></p>
  
    <% }) %>
</body>
  
</html>

Paso 3: agregar usuarios y sus mensajes a la lista: para esto, debemos crear un formulario y manejar los datos del formulario dentro de nuestro archivo ‘app.js’ usando Body Parser.

casa.ejs

<h1>Add Message</h1>

<form action="/" method="post">
     <input type="text" placeholder="User Name"
          name="userName">
     <input type="text" placeholder="Message"
          name="userMessage">
     <button type="submit">Send</button>
</form>

Manejar datos de formulario dentro de ‘app.js’: tenemos que obtener valores de un formulario usando req.body.valueName y luego organizarlo como un objeto y empujarlo dentro de la array de nuestro usuario.

aplicación.js

app.post("/", (req, res) => {
   const inputUserName = req.body.userName
   const inputUserMessage = req.body.userMessage
   
   users.push({
       userName: inputUserName,
       userMessage: inputUserMessage,
   })
   
   res.render("home", {
       data: users
   })
})

Código completo:

aplicación.js

Javascript

const express = require('express')
const bodyParser = require('body-parser')
const users = [{
        userMessage: "Hi",
        userName: "Aditya Gupta"
    },
    {
        userMessage: "Hello",
        userName: "Vanshita Jaiswal"
    }
]
  
const app = express()
  
app.set('view engine', 'ejs')
  
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
    extended: true
}))
  
  
app.get("/", function (req, res) {
    res.render("home", {
        data: users
    })
})
  
app.post("/", (req, res) => {
    const inputUserName = req.body.userName
    const inputUserMessage = req.body.userMessage
  
    users.push({
        userName: inputUserName,
        userMessage: inputUserMessage,
    })
  
    res.render("home", {
        data: users
    })
})
  
app.listen(3000, (req, res) => {
    console.log("App is running on port 3000")
})

casa.ejs

HTML

<!DOCTYPE html>
<html>
  
<head>
    <title>ChatRoom</title>
  
    <style>
        h2 {
            margin: 12px 0px 0px 0px;
            padding: 0px;
        }
  
        p {
            margin: 0px;
            padding: 0px;
        }
    </style>
</head>
    
<body>
    <h1>ChatRoom</h1>
    <% data.forEach(element=> { %>
    <h2><%= element.userMessage %></h2>
      
<p>by <%= element.userName %></p>
  
    <% }) %>
  
    <h1>Add Message</h1>
  
    <form action="/" method="post">
        <input type="text" placeholder="User Name"
               name="userName">
        <input type="text" placeholder="Message"
               name="userMessage">
        <button type="submit">Send</button>
    </form>
</body>
  
</html>

Pasos para ejecutar la aplicación: Dentro de la terminal, escriba el comando para ejecutar su script.

node app.js

Producción:

 

Publicación traducida automáticamente

Artículo escrito por devaadi y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *