needle重连, night主题美化

This commit is contained in:
life
2015-05-03 16:27:51 +08:00
parent f7ba0ce64e
commit 060435bcaa
17 changed files with 1340 additions and 88 deletions

14
src/node_modules/api.js generated vendored
View File

@@ -20,7 +20,7 @@ function log(o) {
// timeout 0无限等待, 60,000 1分钟
needle.defaults({
timeout: 5*60000
timeout: 60000
});
// 远程数据服务
@@ -94,7 +94,7 @@ var Api = {
// log({emai: email, pwd: pwd});
// console.log(this.getUrl('auth/login', {email: email, pwd: pwd}));
// console.log('????????????')
needle.post(this.getUrl('auth/login'), {email: email, pwd: pwd}, function(error, response) {
needle.post(this.getUrl('auth/login'), {email: email, pwd: pwd}, {timeout: 10000}, function(error, response) {
me.checkError(error, response);
if(error) {
return callback && callback(false);
@@ -217,7 +217,9 @@ var Api = {
getLastSyncState: function(callback) {
var me = this;
var url = this.getUrl('user/getSyncState');
needle.get(url, function(error, response) {
console.log(url);
needle.get(url, {timeout: 10000}, function(error, response) {
// console.log('user/getSyncState ret');
me.checkError(error, response);
if(error) {
return callback && callback(false);
@@ -439,7 +441,7 @@ var Api = {
var me = this;
var data = {notebookId: notebook.ServerNotebookId, usn: notebook.Usn};
log('delete notebook');
needle.post(me.getUrl('notebook/deleteNotebook'), data, {}, function(err, resp) {
needle.post(me.getUrl('notebook/deleteNotebook'), data, {timeout: 10000}, function(err, resp) {
me.checkError(err, resp);
if(err) {
return callback(false);
@@ -633,7 +635,7 @@ var Api = {
log('delete note');
// 这里要重新require下, 不然为{}
Note = require('note');
needle.post(me.getUrl('note/deleteTrash'), data, {}, function(err, resp) {
needle.post(me.getUrl('note/deleteTrash'), data, {timeout: 10000}, function(err, resp) {
me.checkError(err, resp);
if(err) {
return callback(false);
@@ -728,7 +730,7 @@ var Api = {
// 删除标签
deleteTag: function(tag, callback) {
var me = this;
needle.post(me.getUrl('tag/deleteTag'), {tag: tag.Tag, usn: tag.Usn}, {}, function(err, resp) {
needle.post(me.getUrl('tag/deleteTag'), {tag: tag.Tag, usn: tag.Usn}, {timeout: 10000}, function(err, resp) {
me.checkError(err, resp);
if(err) {
return callback && callback(false);

View File

@@ -21,8 +21,8 @@ var fs = require('fs'),
//////////////////////////////////////////
var version = JSON.parse(fs.readFileSync(__dirname + '/../package.json').toString()).version,
debugging = !!process.env.DEBUG,
debug = debugging ? console.log : function() { /* noop */ };
debugging = !!process.env.DEBUG, // life 开始debug模式
debug = debugging ? console : {'log': function() { /* noop */ }};
var user_agent = 'Needle/' + version;
user_agent += ' (Node.js ' + process.version + '; ' + process.platform + ' ' + process.arch + ')';
@@ -37,7 +37,7 @@ var decompressors = {};
try {
var zlib = require('zlib')
var zlib = require('zlib');
decompressors['x-deflate'] = zlib.Inflate;
decompressors['deflate'] = zlib.Inflate;
@@ -199,6 +199,7 @@ var Needle = {
}
},
// 发送请求
send_request: function(count, method, uri, config, post_data, out, callback) {
var timer,
@@ -216,11 +217,11 @@ var Needle = {
out.emit('end', err, resp, body);
}
debug('Making request #' + count, request_opts);
// console.log('Making request #' + count, request_opts);
var request = protocol.request(request_opts, function(resp) {
// 没有收到
var headers = resp.headers;
debug('Got response', headers);
// console.log('Got response', headers);
if (timer) clearTimeout(timer);
// if redirect code is found, send a GET request to that location if enabled via 'follow' option
@@ -348,7 +349,7 @@ var Needle = {
}); // end request call
// unless timeout was disabled, set a timeout to abort the request
console.log('needle timeout' + config.timeout);
// console.log('needle timeout' + config.timeout);
if (config.timeout > 0) {
timer = setTimeout(function() {
console.error('needle timeout' + config.timeout);
@@ -356,10 +357,21 @@ var Needle = {
}, config.timeout);
}
// request.abort()会触发error
// { [Error: socket hang up] code: 'ECONNRESET' }
request.on('error', function(err) {
debug('Request error', err);
if (timer) clearTimeout(timer);
// 再重新请求一次
if(err && err.code == 'ECONNRESET' && count == 1) {
setTimeout(function() {
console.log('重连连一次');
self.send_request(count+1, method, uri, config, post_data, out, callback);
}, Math.random() * 1000);
return;
}
console.log('Request error', err);
done(err || new Error('Unknown error when making request.'));
});