【问题标题】:Node.JS and Asynchronous MessagingNode.JS 和异步消息传递
【发布时间】:2017-03-08 07:53:26
【问题描述】:

好吧,这不是你想的那样,我不是在寻求有关异步/等待模式或异步编程的帮助,我精通这些。但是,我正在查询 Node.JS Express 服务中是否有可能。

情景

我有一个使用 Node.JS 开发的 Web 服务,并使用 Express.JS 公开一些客户端可以连接并发送 POST 请求的 REST 端点。在大多数情况下,这些是同步的,将创建一个 SOAP 消息并将其发送到外部服务并接收立即响应,然后可以将其返回给客户端,所有这些都是已经实现的非常简单的东西。所以你的意思是什么,我听到你说,我要说到了。

我有几个 POST 交互,它们将构建一个 SOAP 消息以发送到异步外部端点,其中将通过入站端点异步接收响应。

选项 1:在这些情况下,我希望能够构建 SOAP 消息,创建一个侦听器(这样我就可以侦听对我的请求的响应),然后发送对立即返回 200 的外部服务的请求。

选项 2:当我设置服务时,我还想设置和侦听来自外部服务的传入请求,同时还侦听来自内部服务的 REST 请求。

问题

在 Node 和 Express 中是否可以使用任一选项?如果是这样,如何实现这一目标?

注意:我知道在 C# 中使用 WCF 或侦听器是可能的,但我想避免这种情况并使用 Node.JS,因此非常感谢任何帮助。

【问题讨论】:

    标签: node.js express asynchronous typescript soap


    【解决方案1】:

    首先检查node-soap是否符合您的需求。

    选项 1:在这些情况下,我正在寻找的是能够构建 SOAP 消息,创建一个侦听器(以便我可以侦听对我的请求的响应),然后将请求发送到外部服务立即返回 200。

    这是一个非常基本的非肥皂服务实现。

    let request = require('request-promise');
    let express = require('express');
    let app = express();
    
    //Validate the parameters for the request
    function validateRequest(req) { ... }
    //Transform the request to match the internal API endpoint
    function transformRequest(req) { ... }
    
    app.post('/external', function(req, res) {
      if(!validateRequest(req))
       return res.status(400).json({success: false, error: 'Bad request format');
      res.status(200).send();
      
      let callbackUrl = req.query.callback;
      let transformedRequest = transformRequest(req);
      let internalServiceUrl = 'https://internal.service.com/internal'
      request.post(internalServiceUrl, {body: transformedRequest}).then(function (internalResponse){
       //Return some of the internal response?
       return request.get(callbackUrl, {success: true, processed: true});
      }).catch(function (e) {
       request.get(callbackUrl, {success: false, error: e});
      });
    });

    选项 2:当我设置服务时,我还想设置和侦听来自外部服务的传入请求,同时还侦听来自内部服务的 REST 请求。

    http 中没有“监听”。如果您需要实时收听,请查看socket.io。它使用 websockets。

    您的另一个选择是轮询内部服务(例如,如果您想检查其可用性)。

    【讨论】:

      猜你喜欢
      • 2018-07-15
      • 1970-01-01
      • 2015-09-29
      • 2018-07-07
      • 2021-07-27
      • 1970-01-01
      • 2011-08-27
      • 2018-12-16
      • 2014-04-01
      相关资源
      最近更新 更多