Articles of web services

简单的web服务与节点肥皂

我正在尝试使用SOAP实现一个简单的Web服务,使用Node Js和node-soap,但客户端似乎在使用服务器时遇到问题。 assert.js:92 throw new assert.AssertionError({ ^ AssertionError: invalid message definition for document style binding 我的wsdl文件是: <?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions name="wscalc1" targetNamespace="http://localhost:8000/wscalc1" xmlns="http://localhost:8000/wscalc1" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> <wsdl:message name="sumarRequest"> <wsdl:part name="a" type="xs:string"></wsdl:part> <wsdl:part name="b" type="xs:string"></wsdl:part> </wsdl:message> <wsdl:message name="multiplicarRequest"> <wsdl:part name="a" type="xs:string"></wsdl:part> <wsdl:part name="b" type="xs:string"></wsdl:part> </wsdl:message> <wsdl:message name="multiplicarResponse"> <wsdl:part name="res" type="xs:string"></wsdl:part> </wsdl:message> <wsdl:message name="sumarResponse"> <wsdl:part name="res" […]

节点服务器的响应时间出现意外延迟

问题陈述- 我们在互联网客户端和下游服务之间使用路由器。 路由器(服务)是用Node.js编写的 其责任是将networking客户端的请求传递给相应的下游服务,并将响应返回给networking客户端。 我们在路由器级面临一些延迟。 用于http-proxy- https://github.com/nodejitsu/node-http-proxy 节点 – http代理示例 – 用样例解释。 我们在99%的情况下面临着问题 – 我们做了100次并发的加载/性能testing。 根据结果​​,直到95百分位,对互联网客户的响应时间看起来很棒。 但是,在百分之九十九的情况下,下游服务在预期时间(〜250ms)内响应。 但路由器比预期的时间多了10倍(〜2500毫秒)。 服务信息 – 路由器和下游服务都在同一个区域,同一个子网。 所以,这个延迟不是因为networking。 这种延迟的可能性 – 某些线程在节点服务级别被阻塞。 这就是为什么,不能听下游服务响应。 花更多的时间在DNS查找。 节点级别线程数量less,这就是为什么不能监听来自下游服务端的所有传入响应。 为了分析这一点, 我们在configuration下面查了下来 – keepAlive,maxSockets,maxFreeSockets,keepAliveMsecs,日志级别。 PLease检查http / https代理的节点configuration – http代理configuration 节点服务的代码片段 – var httpProxy = require('http-proxy'); var http = require('http'); var https = require('https'); var agent = new […]

节点Http代理Web套接字平衡

我需要能够在应用程序级别上平衡WebSocket。 让我们说,前面的websocket请求基于我收到的消息,解码它的代理,然后使用该数据发送到另一个套接字服务器使用一些逻辑。 但我无法做到这一点。 这是我写的最初的代码,并试图做到这一点。 这是服务器 var http = require('http'); var httpProxy = require('http-proxy'); var WebSocket = require('ws'); var WebSocketServer = require('ws').Server; var wss = new WebSocketServer({ port: 8080 }); wss.on('connection', function connection(ws) { ws.on('message', function incoming(message) { console.log('received: %s', message); }); ws.send('something'); }); var proxy = httpProxy.createServer({target: 'ws://localhost:8080', ws:true}); var server = httpProxy.createServer(function(req, res) { […]

什么Node.js Web服务看起来像?

我正在看看Node.js,并考虑使用它来构build一个API。 据我所知,ExpressJS将是Web框架,而不是我想要解决这个问题。 那么,Web服务会是什么样子呢? 难道只是创build一个服务器,与mongo交谈并返回结果? 另外,路由是什么样的? (我显然想“devise”路线)。

Node.js作为JSON转发器

我是Node.js的新手,但是我想用它作为一个快速的web服务器,它只需要一个请求uri,然后在返回一个JSONstream的内部服务上运行一个查询。 即这样的事情: http.createServer(function(request, response) { var uri = url.parse(request.url).pathname; if(uri === "/streamA") { //send get request to internal network server http://server:1234/db?someReqA –>Returns JSON ….? //send response to requestor of the JSON from the above get ….? } else if(uri === "/streamB") { //send get request to internal network server http://server:1234/db?someReqB –>Returns JSON ….? //send response […]

使用Node.JS作为REST服务器和Web服务器

我正在用Angular.js和Node.js写一个应用程序。 有一个用HTML和Angular.js编写的客户端应用程序 ,需要像Apache这样的Web服务器才能联机。 在Node.js中还有一个服务器端REST webservice ,它build立在restify (但我不在乎使用哪个REST API,我可以使用另一个REST API)。 我可以使用REST Web服务的Node.js服务器和服务客户​​端Web应用的另一个Node.js服务器来完成整个工作。 但我想只有一个Node.js服务器运行 ,在一个URL /端口(以防止跨域AJAX请求)。 我怎么能这样做?

NodeJs和signalR之间的devise考虑

我有一个完全使用.net C#构build的Web服务。 现在我想要使用signalR或节点JS,以便如果Web服务有一些更新,它可以推送到客户端,这是在HTML的JavaScript。 devise考虑: 我在IIS上运行我的Web服务。 客户端在Html的JavaScript 用户数可能很高。 可能是100或200 networking服务将会有很长一段时间的频繁更新。 Web服务确实需要DB调用和less量的计算 服务器规范不是一个问题。 需要Web服务的稳定性和安全性

使用Node.js连接到REST API

使用Node.js写一个连接两个REST API的独立应用程序是否明智? 一端是POS销售点系统 另一个将是一个托pipe的电子商务平台 将有一个最小的界面来configuration服务。 而已。

用Node.js /强大的中止用户请求

我正在使用强大的接收与node.jsfile upload。 我在一个多部分请求中将一些字段与一个文件一起发送。 只要某些字段到达,我就可以validation请求的真实性,如果不正确,我想中止整个请求,以避免资源浪费。 我还没有find正确的方法来中止传入的请求。 我试图使用req.connection.destroy(); 如下: form .on('field', function(field, value) { fields[field] = value; if (!fields['token'] || !fields['id'] || !fields['timestamp']) { return; } if (!validateToken(fields['token'], fields['id'], fields['timestamp'])) { res.writeHead(401, {'Content-Type' : 'text/plain' }); res.end('Unauthorized'); req.connection.destroy(); } }) 但是,这会触发以下错误: events.js:45 throw arguments[1]; // Unhandled 'error' event ^ Error: Cannot resume() closed Socket. at Socket.resume (net.js:764:11) […]

如何设置NodeJS的einaros / ws模块接受wss(安全的ws)连接?

我正在使用NodeJS的eniaros / ws模块在iOS应用程序和使用web套接字的NodeJS服务器之间进行实时通信。 该应用程序运行良好,但现在我必须使用wss保护服务器和iOS应用程序之间的通信。 我有我的Rapid SSL证书和密钥,我在服务器上使用以下代码: var fs = require('fs'); var cfg = { ssl: true, port: 8081, ssl_key: 'key.key', ssl_cert: 'cert.crt' }; var httpServ = ( cfg.ssl ) ? require('https') : require('http'); var app = null; // dummy request processing var processRequest = function( req, res ) { res.writeHead(200); res.end("All glory to WebSockets!\n"); }; […]