我遵循了这个git代码库(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)发布于 2016-03-10 19:55:13
问题1的答案:readFileSync用于加载wsdl,而不是创建服务器。所以不需要在回调中创建server。
问题2的答案: soap.listen正在侦听请求,然后处理该请求。可能阻塞的是# do some work步骤,因此该步骤之后的回调。
问题3的答案:您必须在编写SOAP API服务器时创建您的wsdl,或者如果您正在使用现有的服务,则应该以以wsdl结尾的url的形式提供它。
wsdl在xml中,因此可以生成。See which wsdl style to use notes。
另请参阅我的soap示例项目nodejs_mock_agresso。
https://stackoverflow.com/questions/32480481
复制相似问题