Skip to content

Commit 917e063

Browse files
Notification refactors: t->type, MEMBERSHIP_MS_UPDATE, MEMBERSHIP_LS_UPDATE
1 parent 3b3c3b5 commit 917e063

19 files changed

+71
-71
lines changed

src/__tests__/browserSuites/push-fallback.spec.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import streamingPausedControlPriMessage2 from '../mocks/message.CONTROL.STREAMIN
2020
import streamingDisabledControlPriMessage from '../mocks/message.CONTROL.STREAMING_DISABLED.control_pri.1586987434950.json';
2121

2222
import splitUpdateMessage from '../mocks/message.SPLIT_UPDATE.1457552649999.json';
23-
import mySegmentsUpdateMessage from '../mocks/message.MY_SEGMENTS_UPDATE_V3.UNBOUNDED.1457552640000.json';
23+
import mySegmentsUpdateMessage from '../mocks/message.MEMBERSHIP_MS_UPDATE.UNBOUNDED.1457552640000.json';
2424

2525
import authPushEnabledNicolas from '../mocks/auth.pushEnabled.nicolas@split.io.json';
2626
import authPushEnabledNicolasAndMarcio from '../mocks/auth.pushEnabled.nicolas@split.io.marcio@split.io.json';
@@ -66,11 +66,11 @@ const MILLIS_CREATE_CLIENT_DURING_PUSH = MILLIS_STREAMING_UP_OCCUPANCY + 50;
6666
const MILLIS_SPLIT_UPDATE_EVENT_DURING_PUSH = MILLIS_STREAMING_UP_OCCUPANCY + 100;
6767

6868
const MILLIS_STREAMING_PAUSED_CONTROL = MILLIS_SPLIT_UPDATE_EVENT_DURING_PUSH + 100;
69-
const MILLIS_MY_SEGMENTS_UPDATE_EVENT_DURING_POLLING = MILLIS_STREAMING_PAUSED_CONTROL + 100;
69+
const MILLIS_MEMBERSHIP_MS_UPDATE_EVENT_DURING_POLLING = MILLIS_STREAMING_PAUSED_CONTROL + 100;
7070
const MILLIS_STREAMING_RESUMED_CONTROL = MILLIS_STREAMING_PAUSED_CONTROL + settings.scheduler.featuresRefreshRate + 100;
71-
const MILLIS_MY_SEGMENTS_UPDATE_EVENT_DURING_PUSH = MILLIS_STREAMING_RESUMED_CONTROL + 100;
71+
const MILLIS_MEMBERSHIP_MS_UPDATE_EVENT_DURING_PUSH = MILLIS_STREAMING_RESUMED_CONTROL + 100;
7272

73-
const MILLIS_STREAMING_PAUSED_CONTROL_2 = MILLIS_MY_SEGMENTS_UPDATE_EVENT_DURING_PUSH + 100;
73+
const MILLIS_STREAMING_PAUSED_CONTROL_2 = MILLIS_MEMBERSHIP_MS_UPDATE_EVENT_DURING_PUSH + 100;
7474
const MILLIS_STREAMING_RESET_WHILE_PUSH_DOWN = MILLIS_STREAMING_PAUSED_CONTROL_2 + 100;
7575
const MILLIS_STREAMING_RESET_WHILE_PUSH_UP = MILLIS_STREAMING_RESET_WHILE_PUSH_DOWN + settings.scheduler.featuresRefreshRate;
7676
const MILLIS_STREAMING_DISABLED_CONTROL = MILLIS_STREAMING_RESET_WHILE_PUSH_UP + 100;
@@ -88,11 +88,11 @@ const MILLIS_DESTROY = MILLIS_STREAMING_DISABLED_CONTROL + settings.scheduler.fe
8888
* 0.55 secs: create a new client while streaming -> initial fetch (/memberships/marcio), auth, SSE connection and syncAll (/splitChanges, /memberships/nicolas, /memberships/marcio)
8989
* 0.6 secs: SPLIT_UPDATE event -> /splitChanges
9090
* 0.7 secs: Streaming down (CONTROL event) -> fetch due to fallback to polling (/splitChanges, /memberships/nicolas, /memberships/marcio)
91-
* 0.8 secs: MY_SEGMENTS_UPDATE_V3 event ignored
91+
* 0.8 secs: MEMBERSHIP_MS_UPDATE event ignored
9292
* 0.9 secs: periodic fetch due to polling (/splitChanges)
9393
* 0.95 secs: periodic fetch due to polling (/memberships/nicolas, /memberships/marcio)
9494
* 1.0 secs: Streaming up (CONTROL event) -> syncAll (/splitChanges, /memberships/nicolas, /memberships/marcio)
95-
* 1.1 secs: Unbounded MY_SEGMENTS_UPDATE_V3 event -> /memberships/nicolas, /memberships/marcio
95+
* 1.1 secs: Unbounded MEMBERSHIP_MS_UPDATE event -> /memberships/nicolas, /memberships/marcio
9696
* 1.2 secs: Streaming down (CONTROL event) -> fetch due to fallback to polling (/splitChanges, /memberships/nicolas, /memberships/marcio)
9797
* 1.3 secs: STREAMING_RESET control event -> auth, SSE connection, syncAll and stop polling
9898
* 1.5 secs: STREAMING_RESET control event -> auth, SSE connection, syncAll
@@ -155,7 +155,7 @@ export function testFallback(fetchMock, assert) {
155155
setTimeout(() => {
156156
assert.equal(eventSourceInstance.readyState, EventSourceMock.OPEN, 'EventSource connection keeps opened after PUSH_SUBSYSTEM_DOWN (STREAMING_PAUSED event)');
157157
eventSourceInstance.emitMessage(mySegmentsUpdateMessage);
158-
}, MILLIS_MY_SEGMENTS_UPDATE_EVENT_DURING_POLLING - MILLIS_CREATE_CLIENT_DURING_PUSH); // send a MY_SEGMENTS_UPDATE event while polling, to check that we are ignoring it
158+
}, MILLIS_MEMBERSHIP_MS_UPDATE_EVENT_DURING_POLLING - MILLIS_CREATE_CLIENT_DURING_PUSH); // send a MEMBERSHIP_MS_UPDATE event while polling, to check that we are ignoring it
159159

160160
setTimeout(() => {
161161
eventSourceInstance.emitMessage(streamingResumedControlPriMessage);
@@ -167,7 +167,7 @@ export function testFallback(fetchMock, assert) {
167167
assert.equal(client.getTreatment('real_split'), 'on', 'evaluation with updated segment');
168168
});
169169
eventSourceInstance.emitMessage(mySegmentsUpdateMessage);
170-
}, MILLIS_MY_SEGMENTS_UPDATE_EVENT_DURING_PUSH - MILLIS_CREATE_CLIENT_DURING_PUSH); // send a MY_SEGMENTS_UPDATE event
170+
}, MILLIS_MEMBERSHIP_MS_UPDATE_EVENT_DURING_PUSH - MILLIS_CREATE_CLIENT_DURING_PUSH); // send a MEMBERSHIP_MS_UPDATE event
171171

172172
setTimeout(() => {
173173
eventSourceInstance.emitMessage(streamingPausedControlPriMessage2);
@@ -271,10 +271,10 @@ export function testFallback(fetchMock, assert) {
271271
fetchMock.getOnce(url(settings, '/memberships/nicolas%40split.io'), { status: 200, body: membershipsNicolasMock1 });
272272
fetchMock.getOnce(url(settings, '/memberships/marcio%40split.io'), { status: 200, body: membershipsMarcio });
273273

274-
// fetch due to MY_SEGMENTS_UPDATE event
274+
// fetch due to MEMBERSHIP_MS_UPDATE event
275275
fetchMock.getOnce(url(settings, '/memberships/nicolas%40split.io'), function () {
276276
const lapse = Date.now() - start;
277-
assert.true(nearlyEqual(lapse, MILLIS_MY_SEGMENTS_UPDATE_EVENT_DURING_PUSH), 'sync due to MY_SEGMENTS_UPDATE event');
277+
assert.true(nearlyEqual(lapse, MILLIS_MEMBERSHIP_MS_UPDATE_EVENT_DURING_PUSH), 'sync due to MEMBERSHIP_MS_UPDATE event');
278278
return { status: 200, body: membershipsNicolasMock2 };
279279
});
280280
fetchMock.getOnce(url(settings, '/memberships/marcio%40split.io'), { status: 200, body: membershipsMarcio });

src/__tests__/browserSuites/push-synchronization-retries.spec.js

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import membershipsMarcio from '../mocks/memberships.marcio@split.io.json';
77

88
import splitUpdateMessage from '../mocks/message.SPLIT_UPDATE.1457552649999.json';
99
import oldSplitUpdateMessage from '../mocks/message.SPLIT_UPDATE.1457552620999.json';
10-
import mySegmentsUpdateMessage from '../mocks/message.MY_SEGMENTS_UPDATE_V3.UNBOUNDED.1457552640000.json';
10+
import mySegmentsUpdateMessage from '../mocks/message.MEMBERSHIP_MS_UPDATE.UNBOUNDED.1457552640000.json';
1111
import splitKillMessage from '../mocks/message.SPLIT_KILL.1457552650000.json';
1212

1313
import authPushEnabledNicolas from '../mocks/auth.pushEnabled.nicolas@split.io.json';
@@ -64,10 +64,10 @@ const MILLIS_THIRD_RETRY_FOR_SPLIT_KILL_EVENT = 2000;
6464
*
6565
* 0.4 secs: SPLIT_UPDATE event with old changeNumber -> SDK_UPDATE not triggered
6666
*
67-
* 0.5 secs: Unbounded MY_SEGMENTS_UPDATE_V3 event -> /memberships/marcio@split.io OK, /memberships/nicolas@split.io: network error
68-
* 0.6 secs: Unbounded MY_SEGMENTS_UPDATE_V3 event -> /memberships/nicolas@split.io retry: invalid JSON response
69-
* 0.8 secs: Unbounded MY_SEGMENTS_UPDATE_V3 event -> /memberships/nicolas@split.io: server error
70-
* 1.2 secs: Unbounded MY_SEGMENTS_UPDATE_V3 event -> /memberships/nicolas@split.io retry: success -> SDK_UPDATE triggered
67+
* 0.5 secs: Unbounded MEMBERSHIP_MS_UPDATE event -> /memberships/marcio@split.io OK, /memberships/nicolas@split.io: network error
68+
* 0.6 secs: Unbounded MEMBERSHIP_MS_UPDATE event -> /memberships/nicolas@split.io retry: invalid JSON response
69+
* 0.8 secs: Unbounded MEMBERSHIP_MS_UPDATE event -> /memberships/nicolas@split.io: server error
70+
* 1.2 secs: Unbounded MEMBERSHIP_MS_UPDATE event -> /memberships/nicolas@split.io retry: success -> SDK_UPDATE triggered
7171
*
7272
* 1.3 secs: SPLIT_KILL event -> /splitChanges: outdated response -> SDK_UPDATE triggered although fetches fail
7373
* 1.4 secs: SPLIT_KILL event -> /splitChanges retry: network error
@@ -114,11 +114,11 @@ export function testSynchronizationRetries(fetchMock, assert) {
114114
assert.equal(client.getTreatment('splitters'), 'off', 'evaluation with initial MySegments list');
115115
client.once(client.Event.SDK_UPDATE, () => {
116116
const lapse = Date.now() - start;
117-
assert.true(nearlyEqual(lapse, MILLIS_THIRD_RETRY_FOR_MYSEGMENT_UPDATE_EVENT), 'SDK_UPDATE due to MY_SEGMENTS_UPDATE event');
117+
assert.true(nearlyEqual(lapse, MILLIS_THIRD_RETRY_FOR_MYSEGMENT_UPDATE_EVENT), 'SDK_UPDATE due to MEMBERSHIP_MS_UPDATE event');
118118
assert.equal(client.getTreatment('splitters'), 'on', 'evaluation with updated MySegments list');
119119
});
120120
eventSourceInstance.emitMessage(mySegmentsUpdateMessage);
121-
}, MILLIS_MYSEGMENTS_UPDATE_V3_EVENT); // send a MY_SEGMENTS_UPDATE_V3 event with a new changeNumber after 0.4 seconds
121+
}, MILLIS_MYSEGMENTS_UPDATE_V3_EVENT); // send a MEMBERSHIP_MS_UPDATE event with a new changeNumber after 0.4 seconds
122122

123123
setTimeout(() => {
124124
client.once(client.Event.SDK_UPDATE, () => {
@@ -163,16 +163,16 @@ export function testSynchronizationRetries(fetchMock, assert) {
163163
return { status: 200, body: splitChangesMock3 };
164164
});
165165

166-
// fetch due to first MY_SEGMENTS_UPDATE event
166+
// fetch due to first MEMBERSHIP_MS_UPDATE event
167167
fetchMock.getOnce(url(settings, '/memberships/nicolas%40split.io'), { throws: new TypeError('Network error') });
168-
// fetch retry for MY_SEGMENTS_UPDATE event, due to previous fail
168+
// fetch retry for MEMBERSHIP_MS_UPDATE event, due to previous fail
169169
fetchMock.getOnce(url(settings, '/memberships/nicolas%40split.io'), { status: 200, body: '{ "since": 1457552620999, "til' }); // invalid JSON response
170-
// fetch retry for MY_SEGMENTS_UPDATE event, due to previous fail
170+
// fetch retry for MEMBERSHIP_MS_UPDATE event, due to previous fail
171171
fetchMock.getOnce(url(settings, '/memberships/nicolas%40split.io'), { status: 500, body: 'server error' });
172-
// second fetch retry for MY_SEGMENTS_UPDATE event, due to previous fail
172+
// second fetch retry for MEMBERSHIP_MS_UPDATE event, due to previous fail
173173
fetchMock.getOnce(url(settings, '/memberships/nicolas%40split.io'), function () {
174174
const lapse = Date.now() - start;
175-
assert.true(nearlyEqual(lapse, MILLIS_THIRD_RETRY_FOR_MYSEGMENT_UPDATE_EVENT), 'sync second retry for MY_SEGMENTS_UPDATE event');
175+
assert.true(nearlyEqual(lapse, MILLIS_THIRD_RETRY_FOR_MYSEGMENT_UPDATE_EVENT), 'sync second retry for MEMBERSHIP_MS_UPDATE event');
176176
return { status: 200, body: membershipsNicolasMock2 };
177177
});
178178

src/__tests__/browserSuites/push-synchronization.spec.js

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ import splitUpdateMessage from '../mocks/message.SPLIT_UPDATE.1457552649999.json
99
import oldSplitUpdateMessage from '../mocks/message.SPLIT_UPDATE.1457552620999.json';
1010
import splitKillMessage from '../mocks/message.SPLIT_KILL.1457552650000.json';
1111

12-
import unboundedMessage from '../mocks/message.MY_SEGMENTS_UPDATE_V3.UNBOUNDED.1457552650000.json';
13-
import boundedZlibMessage from '../mocks/message.MY_SEGMENTS_UPDATE_V3.BOUNDED.ZLIB.1457552651000.json';
14-
import keylistGzipMessage from '../mocks/message.MY_SEGMENTS_UPDATE_V3.KEYLIST.GZIP.1457552652000.json';
15-
import segmentRemovalMessage from '../mocks/message.MY_SEGMENTS_UPDATE_V3.SEGMENT_REMOVAL.1457552653000.json';
16-
import unboundedMyLargeSegmentsMessage from '../mocks/message.MY_LARGE_SEGMENTS_UPDATE.UNBOUNDED.DELAY.1457552650000.json';
17-
import myLargeSegmentRemovalMessage from '../mocks/message.MY_LARGE_SEGMENTS_UPDATE.SEGMENT_REMOVAL.1457552653000.json';
12+
import unboundedMessage from '../mocks/message.MEMBERSHIP_MS_UPDATE.UNBOUNDED.1457552650000.json';
13+
import boundedZlibMessage from '../mocks/message.MEMBERSHIP_MS_UPDATE.BOUNDED.ZLIB.1457552651000.json';
14+
import keylistGzipMessage from '../mocks/message.MEMBERSHIP_MS_UPDATE.KEYLIST.GZIP.1457552652000.json';
15+
import segmentRemovalMessage from '../mocks/message.MEMBERSHIP_MS_UPDATE.SEGMENT_REMOVAL.1457552653000.json';
16+
import unboundedMyLargeSegmentsMessage from '../mocks/message.MEMBERSHIP_LS_UPDATE.UNBOUNDED.DELAY.1457552650000.json';
17+
import myLargeSegmentRemovalMessage from '../mocks/message.MEMBERSHIP_LS_UPDATE.SEGMENT_REMOVAL.1457552653000.json';
1818

1919
import authPushEnabledNicolas from '../mocks/auth.pushEnabled.nicolas@split.io.json';
2020
import authPushEnabledNicolasAndMarcio from '../mocks/auth.pushEnabled.nicolas@split.io.marcio@split.io.json';
@@ -76,15 +76,15 @@ const MILLIS_SEGMENT_REMOVAL_LS = 1800;
7676
* 0.5 secs: creates a new client -> new auth and SSE connection
7777
* 0.6 secs: SSE connection opened -> syncAll (/splitChanges, /memberships/*)
7878
* 0.7 secs: creates more clients
79-
* 0.8 secs: MY_SEGMENTS_UPDATE_V3 UnboundedFetchRequest event.
80-
* 0.9 secs: MY_SEGMENTS_UPDATE_V3 BoundedFetchRequest event error --> UnboundedFetchRequest.
81-
* 1.0 secs: MY_SEGMENTS_UPDATE_V3 KeyList event error --> UnboundedFetchRequest.
82-
* 1.1 secs: MY_SEGMENTS_UPDATE_V3 BoundedFetchRequest event.
83-
* 1.2 secs: MY_SEGMENTS_UPDATE_V3 KeyList event.
84-
* 1.3 secs: MY_SEGMENTS_UPDATE_V3 SegmentRemoval event.
85-
* 1.4 secs: MY_LARGE_SEGMENTS_UPDATE UnboundedFetchRequest event, with 241 ms delay for 'nicolas@split.io' (hash('nicolas@split.io') % 300)
86-
* 1.641 secs: /memberships/* fetch due to unbounded MY_LARGE_SEGMENTS_UPDATE event -> SDK_UPDATE event
87-
* 1.8 secs: MY_LARGE_SEGMENTS_UPDATE SegmentRemoval event -> SPLIT_UPDATE event
79+
* 0.8 secs: MEMBERSHIP_MS_UPDATE UnboundedFetchRequest event.
80+
* 0.9 secs: MEMBERSHIP_MS_UPDATE BoundedFetchRequest event error --> UnboundedFetchRequest.
81+
* 1.0 secs: MEMBERSHIP_MS_UPDATE KeyList event error --> UnboundedFetchRequest.
82+
* 1.1 secs: MEMBERSHIP_MS_UPDATE BoundedFetchRequest event.
83+
* 1.2 secs: MEMBERSHIP_MS_UPDATE KeyList event.
84+
* 1.3 secs: MEMBERSHIP_MS_UPDATE SegmentRemoval event.
85+
* 1.4 secs: MEMBERSHIP_LS_UPDATE UnboundedFetchRequest event, with 241 ms delay for 'nicolas@split.io' (hash('nicolas@split.io') % 300)
86+
* 1.641 secs: /memberships/* fetch due to unbounded MEMBERSHIP_LS_UPDATE event -> SDK_UPDATE event
87+
* 1.8 secs: MEMBERSHIP_LS_UPDATE SegmentRemoval event -> SPLIT_UPDATE event
8888
*/
8989
export function testSynchronization(fetchMock, assert) {
9090
assert.plan(34);
@@ -319,7 +319,7 @@ export function testSynchronization(fetchMock, assert) {
319319
return { status: 200, body: membershipsMarcio };
320320
});
321321

322-
// 3 unbounded fetch for MY_SEGMENTS_UPDATE_V3 + 1 unbounded fetch for MY_LARGE_SEGMENTS_UPDATE
322+
// 3 unbounded fetch for MEMBERSHIP_MS_UPDATE + 1 unbounded fetch for MEMBERSHIP_LS_UPDATE
323323
fetchMock.get({ url: url(settings, '/memberships/nicolas%40split.io'), repeat: 3 }, function (url, opts) {
324324
if (!hasNoCacheHeader(opts)) assert.fail('request must not include `Cache-Control` header');
325325
return { status: 200, body: membershipsNicolasMock2 };
@@ -330,7 +330,7 @@ export function testSynchronization(fetchMock, assert) {
330330
return { status: 200, body: membershipsMarcio };
331331
});
332332

333-
// initial fetch of memberships for other clients + sync all after third SSE opened + 3 unbounded fetch for MY_SEGMENTS_UPDATE_V3 + 1 unbounded fetch for MY_LARGE_SEGMENTS_UPDATE
333+
// initial fetch of memberships for other clients + sync all after third SSE opened + 3 unbounded fetch for MEMBERSHIP_MS_UPDATE + 1 unbounded fetch for MEMBERSHIP_LS_UPDATE
334334
fetchMock.getOnce(url(settings, '/splitChanges?s=1.2&since=1457552650000'), { status: 200, body: { splits: [], since: 1457552650000, till: 1457552650000 } });
335335
fetchMock.get({ url: url(settings, '/memberships/key1'), repeat: 6 }, { status: 200, body: { ms: {} } });
336336
fetchMock.get({ url: url(settings, '/memberships/key3'), repeat: 6 }, { status: 200, body: { ms: { k: [{ n: 'splitters' }] } } });
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type": "message",
3+
"data": "{\"data\":\"{\\\"type\\\":\\\"MEMBERSHIP_LS_UPDATE\\\",\\\"cn\\\":1457552653000,\\\"n\\\":[\\\"splitters\\\"],\\\"c\\\": 0,\\\"u\\\": 3,\\\"d\\\":\\\"\\\"}\"}"
4+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type": "message",
3+
"data": "{\"data\":\"{\\\"type\\\":\\\"MEMBERSHIP_LS_UPDATE\\\",\\\"cn\\\":1457552650000,\\\"n\\\":[],\\\"c\\\": 0,\\\"u\\\": 0,\\\"d\\\":\\\"\\\",\\\"i\\\":300,\\\"h\\\":1,\\\"s\\\":0}\"}"
4+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type": "message",
3+
"data": "{\"data\":\"{\\\"type\\\":\\\"MEMBERSHIP_MS_UPDATE\\\",\\\"cn\\\":1457552651000,\\\"n\\\":[],\\\"c\\\": 1,\\\"u\\\": 1,\\\"d\\\":\\\"H4sIAAAAAAAA/2JABxzYeIxQLguYFIBLN8Bl4EABjc+EzOnAsA4QAAD//8YBvWeAAAAA\\\",\\\"h\\\":0}\"}"
4+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type": "message",
3+
"data": "{\"data\":\"{\\\"type\\\":\\\"MEMBERSHIP_MS_UPDATE\\\",\\\"cn\\\":1457552651000,\\\"n\\\":[],\\\"c\\\": 2,\\\"u\\\": 1,\\\"d\\\":\\\"eJxiGAX4AMdAO2AU4AeMA+2AAQACA+0AuoORGMvDBDANtAPoDBQG2gGDGQz16pRloB0wCkbBKBgFo4As0EBYyZCqoojwDwEACAAA//+W/QFR\\\",\\\"h\\\":0}\"}"
4+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type": "message",
3+
"data": "{\"data\":\"{\\\"type\\\":\\\"MEMBERSHIP_MS_UPDATE\\\",\\\"cn\\\":1457552652000,\\\"n\\\":[\\\"splitters\\\"],\\\"c\\\": 1,\\\"u\\\": 2,\\\"d\\\":\\\"H4sIAAAAAAAA/wTAsRHDUAgD0F2ofwEIkPAqPhdZIW0uu/v97GPXHU004ULuMGrYR6XUbIjlXULPPse+dt1yhJibBODjrTmj3GJ4emduuDDP/w0AAP//18WLsl0AAAA=\\\",\\\"h\\\":0}\"}"
4+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type": "message",
3+
"data": "{\"data\":\"{\\\"type\\\":\\\"MEMBERSHIP_MS_UPDATE\\\",\\\"cn\\\":1457552653000,\\\"n\\\":[\\\"splitters\\\"],\\\"c\\\": 0,\\\"u\\\": 3,\\\"d\\\":\\\"\\\",\\\"h\\\":0}\"}"
4+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type": "message",
3+
"data": "{\"data\":\"{\\\"type\\\":\\\"MEMBERSHIP_MS_UPDATE\\\",\\\"cn\\\":1457552640000,\\\"u\\\": 0,\\\"h\\\":0}\"}"
4+
}

0 commit comments

Comments
 (0)