使用node-soap创建SOAP Web服务

时间:2015-09-09 13:10:12

标签: node.js web-services soap

我遵循了git repo(https://github.com/vpulim/node-soap)的这个例子:

问题1

我已经创建了一个服务器是否有必要在回调中创建服务器。从我的理解readFileSync无论如何阻止。

问题2

编写非阻塞并将soap.listen放入回调中会不会更好

问题3

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

soap.service.coffee

 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)
    )
  )

server.coffee

...

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)

1 个答案:

答案 0 :(得分:1)

回答问题1:readFileSync用于加载wsdl而不是创建服务器。因此,没有必要在回调中创建服务器。

回答问题2:soap.listen正在侦听请求然后处理。 # do some work步骤可能会阻止该步骤之后的回调。

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

wsdl位于xml,因此可以生成。 See which wsdl style to use notes

另见我的肥皂示例项目nodejs_mock_agresso