Comparing version 0.0.33 to 0.0.34
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ function showMem () { |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -202,9 +202,5 @@ /* | ||
*/ | ||
function parseContext(serviceID){ | ||
function parseContext(serviceID, options){ | ||
var serviceInfo = config[serviceID]; | ||
var context = {}; | ||
// context.unpack = RalModule.modules.converter[serviceInfo.unpack].unpack; | ||
// context.pack = RalModule.modules.converter[serviceInfo.pack].pack; | ||
// context.unpackConverter = RalModule.modules.converter[serviceInfo.unpack]; | ||
// context.packConverter = RalModule.modules.converter[serviceInfo.pack]; | ||
context.protocol = RalModule.modules.protocol[serviceInfo.protocol]; | ||
@@ -215,10 +211,7 @@ context.balance = RalModule.modules.balance[serviceInfo.balance]; | ||
context.protocolContext = context.protocol.normalizeConfig(serviceInfo); | ||
context.update = function(options){ | ||
context.packConverter = RalModule.modules.converter[options.pack]; | ||
context.pack = context.packConverter.pack; | ||
context.unpackConverter = RalModule.modules.converter[options.unpack]; | ||
context.unpack = context.unpackConverter.unpack; | ||
}; | ||
contextCache[serviceID] = context; | ||
context.packConverter = RalModule.modules.converter[options.pack || serviceInfo.pack]; | ||
context.pack = context.packConverter.pack; | ||
context.unpackConverter = RalModule.modules.converter[options.unpack || serviceInfo.unpack]; | ||
context.unpack = context.unpackConverter.unpack; | ||
return context; | ||
} | ||
@@ -232,2 +225,4 @@ | ||
module.exports.getContext = parseContext; | ||
module.exports.getConf = function(name){ | ||
@@ -237,8 +232,2 @@ //return a copy | ||
var conf = ralUtil.deepClone(config[name]); | ||
conf.__defineGetter__('context', function(){ | ||
if (!contextCache[name]){ | ||
parseContext(name, config[name]); | ||
} | ||
return contextCache[name]; | ||
}); | ||
return conf; | ||
@@ -245,0 +234,0 @@ } |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -47,3 +47,3 @@ /* | ||
} else { | ||
var context = conf.context; | ||
var context = conf.context = config.getContext(serviceName, options); | ||
//normalize conf and options for merge to request options | ||
@@ -54,4 +54,2 @@ context.protocol.normalizeConfig(conf); | ||
context.update(conf); | ||
this.on('retry', function (err) { | ||
@@ -58,0 +56,0 @@ if (this._retryTimes >= conf.retry) { |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
{ | ||
"name": "node-ral", | ||
"version": "0.0.33", | ||
"version": "0.0.34", | ||
"description": "a rpc client for node", | ||
@@ -8,5 +8,5 @@ "main": "index.js", | ||
"pub": "npm publish --registry=http://registry.npmjs.org", | ||
"test": "mocha -t 10000 --reporter dot --check-leaks test/", | ||
"test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot -t 10000 --check-leaks test/", | ||
"test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks -t 10000 --slow 0 test/" | ||
"test": "mocha -t 20000 --reporter dot --check-leaks test/", | ||
"test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot -t 20000 --check-leaks test/", | ||
"test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks -t 20000 --slow 0 test/" | ||
}, | ||
@@ -13,0 +13,0 @@ "repository": { |
@@ -11,9 +11,18 @@ node-ral | ||
## 兼容性 | ||
- [x] node 0.8.x | ||
- [x] node 0.10.x | ||
- [x] node 0.12.x | ||
- [x] io.js | ||
> io.js 1.63至1.8.1版本不支持GBK编码 | ||
## 快速开始 | ||
`node-ral` 为了实现后端服务配置的统一管理,要求后端服务请求的配置与业务实现分离,因此在使用 `node-ral` 之前必须创建后端服务的配置文件。 | ||
`node-ral` 为了实现后端服务配置的统一管理,要求后端服务请求的配置与业务实现分离,因此在使用之前必须创建后端服务的配置文件。 | ||
我们以 [百度地图WebAPI](http://developer.baidu.com/map/index.php?title=webapi/guide/webservice-placeapi#Place.E5.8C.BA.E5.9F.9F.E6.A3.80.E7.B4.A2POI.E6.9C.8D.E5.8A.A1) 为例做一个简单的DEMO,你也可以直接在[example/MAPAPI](./example/MAPAPI)中直接下载。 | ||
我们以 [百度地图WebAPI](http://developer.baidu.com/map/index.php?title=webapi/guide/webservice-placeapi#Place.E5.8C.BA.E5.9F.9F.E6.A3.80.E7.B4.A2POI.E6.9C.8D.E5.8A.A1) 为例做一个简单的DEMO,你也可以直接在[example/baidumap](./example/baidumap)中直接下载。 | ||
### 安装 `node-ral` | ||
### 安装 | ||
@@ -36,3 +45,2 @@ ```bash | ||
unpack: 'json', // 约定服务端返回JSON数据 | ||
method: 'GET', // 使用GET请求 | ||
encoding: 'utf-8', // 服务器返回utf-8编码 | ||
@@ -44,2 +52,3 @@ // 负载均衡与超时重试配置 | ||
// HTTP协议特有配置 | ||
method: 'GET', // 使用GET请求 | ||
query: { // 服务的全局query | ||
@@ -66,3 +75,3 @@ ak: '0C62f9f0ee027b6052dfa35b0f38b61a', | ||
### 初始化RAL | ||
### 初始化 | ||
@@ -134,24 +143,4 @@ ```javascript | ||
## 目录 | ||
## 文档 | ||
## 通用配置 | ||
## 内置支持 | ||
### 请求协议 | ||
### 数据格式 | ||
## 扩展能力 | ||
### 请求协议 | ||
### 数据格式 | ||
## API | ||
### 执行请求 | ||
### 异常处理 | ||
### 封装 | ||
请查阅文档[WIKI](https://github.com/fex-team/node-ral/wiki) |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ 'use strict'; |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ { |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -13,3 +13,3 @@ /* | ||
server: { | ||
host: 'www.webservicex.com', | ||
host: 'www.webservicex.net', | ||
port: 80 | ||
@@ -16,0 +16,0 @@ } |
@@ -381,2 +381,44 @@ /* | ||
}); | ||
it('should use right context when concurrency request', function(done) { | ||
before(function( ok ){ | ||
isInited.on('done', ok); | ||
}); | ||
var count = 2; | ||
RAL('CHANGE_PACK_UNPACK', { | ||
data: { | ||
msg: 'hi', | ||
name: '何方石' | ||
}, | ||
pack: 'querystring', | ||
unpack: 'json', | ||
retry: 2, | ||
timeout: 100 | ||
}).on('data', function(data){ | ||
data.query.msg.should.eql('hi'); | ||
data.query.name.should.eql('何方石'); | ||
data.query.from.should.eql('change'); | ||
partialDone(); | ||
}); | ||
RAL('CHANGE_PACK_UNPACK', { | ||
data: { | ||
msg: 'hi', | ||
name: '何方石' | ||
}, | ||
pack: 'stream', | ||
unpack: 'stream', | ||
retry: 2, | ||
timeout: 100 | ||
}).on('error', function(err){ | ||
err.message.should.be.match(/invalid pack data/); | ||
partialDone(); | ||
}); | ||
function partialDone() { | ||
count--; | ||
if (count === 0) { | ||
done(); | ||
} | ||
} | ||
}); | ||
}); |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
@@ -0,0 +0,0 @@ /* |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
275196
7369
141