Использование событий, отправленных сервером, после res.render () в Node.js

Я искал способы уведомить клиента о завершении трудоемкой функции, но после того, как я уже ответил с помощью res.render ().

Пользователь Тенефф порекомендовал мне события, отправленные сервером, в частности этот пакет: https://www.npmjs.com/package/sse-express

Во всех примерах, которые я видел до сих пор, люди не используют sse с res.render (). Я попытался сделать это с помощью этого кода:

app.post('/pst', sseExpress, function(req, res)
{ 
   var url = req.body.convo;
   res.render('error.ejs');
   res.sse('connected', 
     { welcomeMsg: 'Hello world!' }); 
});

но я получил:

"Error: Can't set headers after they are sent."

Так можно ли отправить sse после res.render ()?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
35
1

Ответы 1

So is it possible to send a sse after a res.render()?

Нет.

В любом случае это не имеет смысла.

Вы либо делаете обычный запрос, ожидая регулярного ответа (в этом случае вы должны использовать res.render(), либо вы делаете запрос на поиск SSE с использованием let eventSource = new EventSource('http://localhost:80/updates');, и в этом случае все ответы на него должны быть через res.sse().

Спасибо! Тогда могу я попробовать другой способ? Могу ли я выполнить res.render (), а затем использовать socketIO для отправки сообщения клиенту на отображаемую страницу о том, что задача выполнена? (И это разблокирует скрытый div на отображаемой странице со ссылкой)

user1584421 12.09.2018 14:41

@ user1584421 - У вас будет аналогичная проблема с синхронизацией.

Quentin 12.09.2018 15:09

Другие вопросы по теме