From 0eb61f2417e801eb6921fca621a911430c3754ed Mon Sep 17 00:00:00 2001 From: "Stephen L. Blum" Date: Thu, 7 Aug 2014 17:27:17 -0700 Subject: [PATCH 1/4] Update simple.html --- web/examples/simple.html | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/web/examples/simple.html b/web/examples/simple.html index 7027cfe89..d80a05dc0 100644 --- a/web/examples/simple.html +++ b/web/examples/simple.html @@ -4,8 +4,9 @@ // INIT PubNub console.log(PUBNUB); var pubnub = PUBNUB.init({ - publish_key : 'demo', - subscribe_key : 'demo' + leave_on_unload : true, + publish_key : 'demo', + subscribe_key : 'demo' }); pubnub.subscribe({ callback : function(r){console.log(r);}, From 5dbb0b7d03877b5ad113b0b5679206eab173ecb4 Mon Sep 17 00:00:00 2001 From: "Stephen L. Blum" Date: Thu, 7 Aug 2014 17:27:52 -0700 Subject: [PATCH 2/4] Update simple.html --- web/examples/simple.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/examples/simple.html b/web/examples/simple.html index d80a05dc0..5b42aad48 100644 --- a/web/examples/simple.html +++ b/web/examples/simple.html @@ -4,7 +4,7 @@ // INIT PubNub console.log(PUBNUB); var pubnub = PUBNUB.init({ - leave_on_unload : true, + leave_on_unload : true, // Perform a Leave Explicitly on Page Unload Event publish_key : 'demo', subscribe_key : 'demo' }); From da21f17a1d722fa17067c7ad2f75a4124a1776de Mon Sep 17 00:00:00 2001 From: Alexander Novikov Date: Sat, 6 Sep 2014 12:53:46 -0700 Subject: [PATCH 3/4] make keep-alive default for node.js add 3rd party keep-alive module dependency for node.js --- node.js/examples/keep-alive.js | 29 +++++++++++++++++++++++++++++ node.js/package.json | 4 +++- node.js/pubnub.js | 12 +++++++++++- node.js/unassembled/platform.js | 12 +++++++++++- 4 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 node.js/examples/keep-alive.js diff --git a/node.js/examples/keep-alive.js b/node.js/examples/keep-alive.js new file mode 100644 index 000000000..34706bfbc --- /dev/null +++ b/node.js/examples/keep-alive.js @@ -0,0 +1,29 @@ +// see current sockets using 'netstat -tonpc' +var Pubnub = require('../pubnub'), + conf = { + publish_key: 'demo', + subscribe_key: 'demo' + }, + i = 20, + timeout = 501, + p; + +p = Pubnub.init(conf); + +function publish(i) { + p.publish({ + channel: 'somechannel', + message: 'hey' + i, + callback: function (result) { + console.log(result); + } + }); + + if (i-- !== 0) { + setTimeout(function () { + publish(i); + }, timeout); + } +} + +publish(i); diff --git a/node.js/package.json b/node.js/package.json index 58e6a0016..47224b974 100644 --- a/node.js/package.json +++ b/node.js/package.json @@ -28,7 +28,9 @@ "real-time", "messaging" ], - "dependencies" : { }, + "dependencies" : { + "agentkeepalive": "~0.2" + }, "noAnalyze": false, "devDependencies": {}, "bundleDependencies": [], diff --git a/node.js/pubnub.js b/node.js/pubnub.js index c16c539bc..6c6cb0567 100644 --- a/node.js/pubnub.js +++ b/node.js/pubnub.js @@ -1459,6 +1459,7 @@ THE SOFTWARE. var NOW = 1 , http = require('http') , https = require('https') +, keepAliveAgent = new (keepAliveIsEmbedded() ? http.Agent : require('agentkeepalive'))({keepAlive: true, keepAliveMsecs: 300000}) , XHRTME = 310000 , DEF_TIMEOUT = 10000 , SECOND = 1000 @@ -1551,7 +1552,8 @@ function xdr( setup ) { options.path = proxy ? "http://" + origin + url:url; options.headers = proxy ? { 'Host': origin }:null; options.method = mode; - options.agent = false; + options.keepAlive= !!keepAliveAgent; + options.agent = keepAliveAgent; options.body = payload; require('http').globalAgent.maxSockets = Infinity; @@ -1640,6 +1642,9 @@ function crypto_obj() { } } +function keepAliveIsEmbedded() { + return 'EventEmitter' in http.Agent.super_; +} var CREATE_PUBNUB = function(setup) { @@ -1650,6 +1655,11 @@ var CREATE_PUBNUB = function(setup) { setup['hmac_SHA256'] = get_hmac_SHA256; setup['crypto_obj'] = crypto_obj(); setup['params'] = {'pnsdk' : PNSDK}; + + if (setup['keepAlive'] === false) { + keepAliveAgent = undefined; + } + SELF = function(setup) { return CREATE_PUBNUB(setup); } diff --git a/node.js/unassembled/platform.js b/node.js/unassembled/platform.js index 11a008cc4..a2293bc26 100644 --- a/node.js/unassembled/platform.js +++ b/node.js/unassembled/platform.js @@ -35,6 +35,7 @@ THE SOFTWARE. var NOW = 1 , http = require('http') , https = require('https') +, keepAliveAgent = new (keepAliveIsEmbedded() ? http.Agent : require('agentkeepalive'))({keepAlive: true, keepAliveMsecs: 300000}) , XHRTME = 310000 , DEF_TIMEOUT = 10000 , SECOND = 1000 @@ -127,7 +128,8 @@ function xdr( setup ) { options.path = proxy ? "http://" + origin + url:url; options.headers = proxy ? { 'Host': origin }:null; options.method = mode; - options.agent = false; + options.keepAlive= !!keepAliveAgent; + options.agent = keepAliveAgent; options.body = payload; require('http').globalAgent.maxSockets = Infinity; @@ -216,6 +218,9 @@ function crypto_obj() { } } +function keepAliveIsEmbedded() { + return 'EventEmitter' in http.Agent.super_; +} var CREATE_PUBNUB = function(setup) { @@ -226,6 +231,11 @@ var CREATE_PUBNUB = function(setup) { setup['hmac_SHA256'] = get_hmac_SHA256; setup['crypto_obj'] = crypto_obj(); setup['params'] = {'pnsdk' : PNSDK}; + + if (setup['keepAlive'] === false) { + keepAliveAgent = undefined; + } + SELF = function(setup) { return CREATE_PUBNUB(setup); } From 7e5c3e69510a96431968a9043fb0a1a27759826a Mon Sep 17 00:00:00 2001 From: Alexander Novikov Date: Thu, 11 Sep 2014 04:41:44 -0700 Subject: [PATCH 4/4] add keepAliveAgent.maxSockets value --- node.js/pubnub.js | 6 +++++- node.js/unassembled/platform.js | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/node.js/pubnub.js b/node.js/pubnub.js index 6c6cb0567..c7d810b55 100644 --- a/node.js/pubnub.js +++ b/node.js/pubnub.js @@ -1459,7 +1459,11 @@ THE SOFTWARE. var NOW = 1 , http = require('http') , https = require('https') -, keepAliveAgent = new (keepAliveIsEmbedded() ? http.Agent : require('agentkeepalive'))({keepAlive: true, keepAliveMsecs: 300000}) +, keepAliveAgent = new (keepAliveIsEmbedded() ? http.Agent : require('agentkeepalive'))({ + keepAlive: true, + keepAliveMsecs: 300000, + maxSockets: 5 + }) , XHRTME = 310000 , DEF_TIMEOUT = 10000 , SECOND = 1000 diff --git a/node.js/unassembled/platform.js b/node.js/unassembled/platform.js index a2293bc26..539454832 100644 --- a/node.js/unassembled/platform.js +++ b/node.js/unassembled/platform.js @@ -35,7 +35,11 @@ THE SOFTWARE. var NOW = 1 , http = require('http') , https = require('https') -, keepAliveAgent = new (keepAliveIsEmbedded() ? http.Agent : require('agentkeepalive'))({keepAlive: true, keepAliveMsecs: 300000}) +, keepAliveAgent = new (keepAliveIsEmbedded() ? http.Agent : require('agentkeepalive'))({ + keepAlive: true, + keepAliveMsecs: 300000, + maxSockets: 5 + }) , XHRTME = 310000 , DEF_TIMEOUT = 10000 , SECOND = 1000