Node.js 使用节点SOAP创建SOAP Web服务

Node.js 使用节点SOAP创建SOAP Web服务,node.js,web-services,soap,Node.js,Web Services,Soap,我遵循了git回购()的示例: 问题1 我已经创建了一个服务器,有必要在回调中创建服务器。从我的理解来看,readFileSync无论如何都是阻塞的 问题2 编写非阻塞并将soap.listen放入回调不是更好吗 问题3 我从哪里获得:'myservice.wsdl'。我必须创建它/如何创建它?有发电机吗 肥皂、服务、咖啡 服务员:咖啡 对问题1的回答:readFileSync用于加载wsdl而不是创建服务器。所以不需要在回调中创建服务器 对问题2的回答:soap.listen正在侦听一个请求,

我遵循了git回购()的示例:

问题1 我已经创建了一个服务器,有必要在回调中创建服务器。从我的理解来看,
readFileSync
无论如何都是阻塞的

问题2 编写非阻塞并将soap.listen放入回调不是更好吗

问题3 我从哪里获得:
'myservice.wsdl'
。我必须创建它/如何创建它?有发电机吗

肥皂、服务、咖啡 服务员:咖啡
对问题1的回答:
readFileSync
用于加载wsdl而不是创建服务器。所以不需要在回调中创建服务器

对问题2的回答:soap.listen正在侦听一个请求,然后该请求被处理。这是
#do some work
步骤,可能会阻塞该步骤,因此在该步骤之后会出现回调

对问题3的回答:您必须在编写SOAP API服务器时创建wsdl,或者如果您使用的是现有服务,则应以
wsdl
结尾的url形式提供wsdl以供使用

wsdl
位于
xml
中,因此可以生成


另请参阅我的soap示例项目。

您好,感谢您的回购,这对我非常有用。只有一件事?我能够使用您的示例通过SOAP客户机进行连接,但我也希望通过HTTP公开服务。你知道怎么做吗?我在您的文件(例如globalweather.wsdl)中看到了Http绑定(get和post),但我无法通过Http访问服务。我尝试在app.js中添加GlobalWeatherHttpGet和GlobalWeatherHttpPost项目,您可以在其中定义soap服务器,但没有成功。我制作了一个入门示例。
 exports.getService = () ->
  myService = {
    MyService: {
      MyPort: {

        # This is how to define an asynchronous function.
        MyAsyncFunction: (args, callback) ->
          # do some work
          callback({
            name: args.name
          })
      }
    }
  }

exports.getXml = () ->
  require('fs').readFileSync('myservice.wsdl', 'utf8', ()->
    server = http.createServer((request,response) ->
      response.end("404: Not Found: "+request.url)
    )
  )
...

http = require('http')
portHTTP = process.env.PORT || 61361
io = require('socket.io')
soap = require('soap')
soapService = require('./backend/soap/soap.service.js')

...

server = http.createServer(app).listen(portHTTP, () ->
  logger.info("Unsecure Express server listening on port #{portHTTP} environment: #{environment}")
)
soap.listen(server, '/wsdl', soapService.getService, soapService.getXml)