Могу ли я отправить несколько ответов через Node.js к клиенту?

#model-view-controller #node.js #socket.io

#model-view-controller #node.js #socket.io

Вопрос:

Я использую Node.js и хочу отправить клиенту несколько ответов. Таким образом, клиент отправит запрос AJAX POST и вернет некоторые данные. Но сервер должен продолжать выполнять некоторую обработку, и когда это будет сделано, я хочу, чтобы он отправил больше данных обратно.

Я знаю, что это хороший кандидат Socket.io , но я действительно не видел примера того, как использовать socket.io в контексте фреймворка MVC. Входит ли это в контроллер?

Ответ №1:

Вы могли бы использовать события, отправленные сервером. Вот пример:

https://github.com/chovy/nodejs-stream (полный пример исходного кода)

Пользовательский интерфейс

 var source = new EventSource('stream');

source.addEventListener('a_server_sent_event', function(e) {
   var data = JSON.parse(e.data);
   //do something with data
});
  

Узел

 if ( uri == '/stream' ) {
  //setup http server response handling and get some data from another service
  http.get(options, function(resp){
    resp.on('data', function(chunk){
      res.write("event: a_server_sent_eventn");
      res.write("data: " chunk.toString() "nn");
    });
  });
}
  

Комментарии:

1. EventSource Поддерживается во всех современных браузерах?