如何使两台服务器异步通信

时间:2017-03-10 12:46:25

标签: node.js api asynchronous

假设我有两台服务器。第一台服务器向第二台服务器发出发布请求。请求对象的主体包含重要的原始数据。我们将此数据作为输入提供给第二台服务器并对其进行处理以生成新数据,该数据将上载​​到某些系统(如AWS S3)。之后,我们通过在那里发出请求将此下载链接发送到第一台服务器。

现在,这种数据处理需要一些时间(几分钟),我们不想让第一台服务器等待这段时间。所以我想立即向我收到请求的第一台服务器发送响应,很快就会将其输出发送给它。现在我想知道解决这个问题的最佳方法是什么。

这是一些代码

第二台服务器

app.post('/data', function(req, res) {
  res.send('Processing started. Will send data soon');
  doProcessing(req.body, function(processedData) {  // this function takes time to complete
    console.log('Work Completed');
    request.send(url, processedData); // send the processed data back to the first server
  });
});

现在,由于nodejs的异步特性,此代码无法正常工作。 doProcessing函数未完全执行。它介于两者之间。我们可以在这里使用哪些方法。请帮忙。感谢

1 个答案:

答案 0 :(得分:1)

你应该读一下Socket.io。当您收到来自第二台服务器的响应时,您只需socket.emit并在客户端socket.on。您只需要将套接字标识符从第一个服务器传递到第二个服务器并将其作为响应从第二个服务器发回 - >首先(你需要知道在哪里发送它)

如果操作准备就绪,您还可以在循环中创建简单的Ajax请求。只需每2-5秒询问服务器一次该链接并更新DOM。