Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

198
Vistas
Express.js: ¿Cómo actualizar el cambio de base de datos en el backend?

Decidí hacer un tipo de sitio de chat janky para comenzar a trabajar con solicitudes y demás.

Mi enfoque fue crear un servidor express.js que reciba solicitudes cuando se publique '/messageReciever'.

 app.post("/messageReciever", (req, res) => { logMessage(req.body.message); });

El siguiente paso fue crear un 'cliente' que pudiera enviar información a este punto final:

 var XMLHttpRequest = require("XMLHttpRequest").XMLHttpRequest; function makePostRequest(url, json) { let http = new XMLHttpRequest(); http.open("POST", url, true); http.setRequestHeader("Content-Type", "application/json"); http.send(JSON.stringify(json)); } function sendMessage(url, message) { makePostRequest(url, {message: message}); logMessage(message); }

Ambos están bien. El problema con el que me encuentro es que, una vez que recibo la solicitud de publicación, quiero actualizar la página principal de mi sitio (para mostrar los mensajes)

 app.get('/', (req, res) => { res.render('index', data = retrieveMessages()); });

He intentado básicamente todo lo que he encontrado en línea:

 res.redirect('back'); res.redirect(req.get('referer')); res.redirect(req.originalUrl)

res.redirect('back') anteriormente en mi código, y funciona. El problema es que intento actualizar la conexión de alguien a un sitio en función de la conexión de otra persona; lo que significa que no puedo usar la información de respuesta como lo haría normalmente.

He intentado buscar formas de actualizar páginas desde funciones externas, pero no puedo encontrar nada.

( Me doy cuenta de que hay formas más fáciles de hacer un sitio de chat que no incluyen el envío extraño de datos entre dos servidores )

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Puede usar un paquete llamado socket.io . Socket.io le permite enviar solicitudes a un cliente una vez que el servidor tiene algunos datos.

Ejemplo:

Servidor:

 // Define express const express = require('express'); const app = express(); // Create the server const http = require('http'); const server = http.createServer(app); // Define socket.io const io = require('socket.io')(server); // Define the port for the server to listen on let port = 3000; function logMessage(message, id) { ... io.emit('message_sent_' + id, { message }); // Emit that a message was sent to the clients } function recieveMessages(id) { // Get the messages somehow } app.post('/messageReciever', (req, res) => { // req.body.message is your message and req.cookies.id is the clients random ID logMessage(req.body.message, req.cookies.id); }); app.get('/', (req, res) => { res.cookie('id', 'some-generated-id'); // Set a cookie for the unique ID to fetch user messages res.render('index', { data: retrieveMessages() }); }); // Get the server listening to incoming requests server.listen(port, () => console.log('my app is online');

Cliente:

 <!doctype html> <html> <body> ... </body> <script src="/socket.io/socket.io.js"></script> <script> const socket = io.connect(); socket.on('message_sent_' + 'some-id', function(data) { // Do something with the data }); </script> </html>

Referencias:

  • https://socket.io/docs/v4/
  • http://expressjs.com/
  • https://marques-robinson-project.medium.com/chat-app-with-socket-io-and-express-using-node-js-2293b87f47c3
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda