我遵循了 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)
)
)
服务器.咖啡
...
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的答案:readFileSync
是用来加载wsdl的,不是用来创建服务器的。所以不需要在回调中创建服务器。
问题 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 .
关于node.js - 使用 node-soap 创建 SOAP Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32480481/