Skip to content

Commit f1239c3

Browse files
author
Devendra
committed
adding metadata support for heartbeat and subscribe requests
1 parent 64c3cdc commit f1239c3

28 files changed

Lines changed: 927 additions & 667 deletions

File tree

core/pubnub-common.js

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,7 @@ function PN_API(setup) {
214214
, TIMETOKEN = 0
215215
, RESUMED = false
216216
, CHANNELS = {}
217+
, METADATA = {}
217218
, PRESENCE_HB_TIMEOUT = null
218219
, PRESENCE_HB_INTERVAL = validate_presence_heartbeat(setup['pnexpires'] || 0, setup['error'])
219220
, PRESENCE_HB_RUNNING = false
@@ -622,6 +623,7 @@ function PN_API(setup) {
622623
}
623624
if (!CB_CALLED) callback({action : "leave"});
624625
CHANNELS[channel] = 0;
626+
if (channel in METADATA) delete METADATA[channel];
625627
} );
626628

627629
// Reset Connection if Count Less
@@ -684,6 +686,13 @@ function PN_API(setup) {
684686
disconnect : disconnect,
685687
reconnect : reconnect
686688
};
689+
if (metadata) {
690+
if (channel in metadata) {
691+
METADATA[channel] = metadata[channel];
692+
} else {
693+
METADATA[channel] = metadata;
694+
}
695+
}
687696

688697
// Presence Enabled?
689698
if (!presence) return;
@@ -758,15 +767,18 @@ function PN_API(setup) {
758767
_reset_offline();
759768

760769
var data = { 'uuid' : UUID, 'auth' : auth_key };
761-
if (metadata) data['metadata'] = metadata;
770+
771+
var md = JSON.stringify(METADATA);
772+
if (md.length > 2) data['metadata'] = JSON.stringify(METADATA);
773+
762774
if (PRESENCE_HB_INTERVAL) data['pnexpires'] = PRESENCE_HB_INTERVAL;
763775
start_presence_heartbeat();
764776
SUB_RECEIVER = xdr({
765777
timeout : sub_timeout,
766778
callback : jsonp,
767779
fail : function(response) {
768780
_invoke_error(response, errcb);
769-
SUB_RECEIVER = null;
781+
//SUB_RECEIVER = null;
770782
SELF['time'](_test_connection);
771783
},
772784
data : data,
@@ -777,7 +789,7 @@ function PN_API(setup) {
777789
],
778790
success : function(messages) {
779791

780-
SUB_RECEIVER = null;
792+
//SUB_RECEIVER = null;
781793
// Check for Errors
782794
if (!messages || (
783795
typeof messages == 'object' &&
@@ -964,6 +976,8 @@ function PN_API(setup) {
964976

965977
if (jsonp != '0') { data['callback'] = jsonp; }
966978

979+
if (CHANNELS[channel].subscribed) METADATA[channel] = metadata;
980+
967981
data['metadata'] = JSON.stringify(metadata);
968982

969983
if (metadata) {
@@ -1157,11 +1171,16 @@ function PN_API(setup) {
11571171
},
11581172
'presence_heartbeat' : function(args) {
11591173
var callback = args['callback'] || function() {}
1160-
var err = args['error'] || function() {}
1174+
var err = args['error'] || function() {}
11611175
var jsonp = jsonp_cb();
1176+
var data = { 'uuid' : UUID, 'auth' : AUTH_KEY };
1177+
1178+
var md = JSON.stringify(METADATA);
1179+
if (md.length > 2) data['metadata'] = JSON.stringify(METADATA);
1180+
11621181
xdr({
11631182
callback : jsonp,
1164-
data : { 'uuid' : UUID, 'auth' : AUTH_KEY },
1183+
data : data,
11651184
timeout : SECOND * 5,
11661185
url : [
11671186
STD_ORIGIN, 'v2', 'presence',

modern/pubnub-crypto.min.js

Lines changed: 26 additions & 24 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

modern/pubnub.js

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,7 @@ function PN_API(setup) {
215215
, TIMETOKEN = 0
216216
, RESUMED = false
217217
, CHANNELS = {}
218+
, METADATA = {}
218219
, PRESENCE_HB_TIMEOUT = null
219220
, PRESENCE_HB_INTERVAL = validate_presence_heartbeat(setup['pnexpires'] || 0, setup['error'])
220221
, PRESENCE_HB_RUNNING = false
@@ -623,6 +624,7 @@ function PN_API(setup) {
623624
}
624625
if (!CB_CALLED) callback({action : "leave"});
625626
CHANNELS[channel] = 0;
627+
if (channel in METADATA) delete METADATA[channel];
626628
} );
627629

628630
// Reset Connection if Count Less
@@ -685,6 +687,13 @@ function PN_API(setup) {
685687
disconnect : disconnect,
686688
reconnect : reconnect
687689
};
690+
if (metadata) {
691+
if (channel in metadata) {
692+
METADATA[channel] = metadata[channel];
693+
} else {
694+
METADATA[channel] = metadata;
695+
}
696+
}
688697

689698
// Presence Enabled?
690699
if (!presence) return;
@@ -759,15 +768,18 @@ function PN_API(setup) {
759768
_reset_offline();
760769

761770
var data = { 'uuid' : UUID, 'auth' : auth_key };
762-
if (metadata) data['metadata'] = metadata;
771+
772+
var md = JSON.stringify(METADATA);
773+
if (md.length > 2) data['metadata'] = JSON.stringify(METADATA);
774+
763775
if (PRESENCE_HB_INTERVAL) data['pnexpires'] = PRESENCE_HB_INTERVAL;
764776
start_presence_heartbeat();
765777
SUB_RECEIVER = xdr({
766778
timeout : sub_timeout,
767779
callback : jsonp,
768780
fail : function(response) {
769781
_invoke_error(response, errcb);
770-
SUB_RECEIVER = null;
782+
//SUB_RECEIVER = null;
771783
SELF['time'](_test_connection);
772784
},
773785
data : data,
@@ -778,7 +790,7 @@ function PN_API(setup) {
778790
],
779791
success : function(messages) {
780792

781-
SUB_RECEIVER = null;
793+
//SUB_RECEIVER = null;
782794
// Check for Errors
783795
if (!messages || (
784796
typeof messages == 'object' &&
@@ -965,6 +977,8 @@ function PN_API(setup) {
965977

966978
if (jsonp != '0') { data['callback'] = jsonp; }
967979

980+
if (CHANNELS[channel].subscribed) METADATA[channel] = metadata;
981+
968982
data['metadata'] = JSON.stringify(metadata);
969983

970984
if (metadata) {
@@ -1158,11 +1172,16 @@ function PN_API(setup) {
11581172
},
11591173
'presence_heartbeat' : function(args) {
11601174
var callback = args['callback'] || function() {}
1161-
var err = args['error'] || function() {}
1175+
var err = args['error'] || function() {}
11621176
var jsonp = jsonp_cb();
1177+
var data = { 'uuid' : UUID, 'auth' : AUTH_KEY };
1178+
1179+
var md = JSON.stringify(METADATA);
1180+
if (md.length > 2) data['metadata'] = JSON.stringify(METADATA);
1181+
11631182
xdr({
11641183
callback : jsonp,
1165-
data : { 'uuid' : UUID, 'auth' : AUTH_KEY },
1184+
data : data,
11661185
timeout : SECOND * 5,
11671186
url : [
11681187
STD_ORIGIN, 'v2', 'presence',

0 commit comments

Comments
 (0)