Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

199
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda