Skip to content

Commit 401bf2b

Browse files
authored
Merge de37543 into ed900f8
2 parents ed900f8 + de37543 commit 401bf2b

34 files changed

+257
-58
lines changed

.github/workflows/release.yml

+5
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
11
on:
22
push:
33
branches: [ master ]
4+
pull_request:
5+
types: [ labeled ]
6+
branches:
7+
- master
48

59
jobs:
610
check-release-tag:
11+
if: ${{ github.head_ref == 'master' || github.event.label.name == 'deploy-release' }}
712
runs-on: ubuntu-latest
813
steps:
914
- name: Checkout code

CHANGELOG.md

+23-19
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,33 @@
1-
# Changelog
2-
3-
## 8.3.0
4-
1+
# Changelog
2+
3+
## 8.4.0-rc1
4+
5+
- [Added] Introduce a new method to switch the Pusher client to a different cluster and re-establish all existing subscriptions and channel bindings.
6+
7+
## 8.3.0
8+
59
- [CHANGED] Update cached re-connect strategy to prioritize WebSocket
6-
7-
## 8.2.0
8-
10+
11+
## 8.2.0
12+
913
- [CHANGED] Remove WebSocket retry limit.
10-
11-
## 8.1.0
12-
14+
15+
## 8.1.0
16+
1317
- [CHANGED] Move @types dependencies to devDependencies
1418
- [CHANGED] Upgrade typescript to 5.1.3
15-
16-
## 8.0.2
17-
19+
20+
## 8.0.2
21+
1822
- [CHANGED] Fix React Native support.
19-
20-
## 8.0.1
21-
23+
24+
## 8.0.1
25+
2226
- [FIXED] Fix 'window is not defined' error in the worker context
2327
- [FIXED] Specify the right status when an error is thrown for the pusher worker instance
24-
25-
## 8.0.0
26-
28+
29+
## 8.0.0
30+
2731
- [CHANGED] Specifying a cluster when instantiating the Pusher object is now mandatory. An exception is thrown if the cluster setting is missing.
2832

2933
## 7.6.0

dist/node/pusher.js

+14-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/node/pusher.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/react-native/pusher.js

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/react-native/pusher.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/web/pusher-with-encryption.js

+14-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/web/pusher-with-encryption.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/web/pusher-with-encryption.min.js

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/web/pusher-with-encryption.min.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/web/pusher.js

+14-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/web/pusher.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/web/pusher.min.js

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/web/pusher.min.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/worker/pusher-with-encryption.worker.js

+14-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/worker/pusher-with-encryption.worker.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/worker/pusher-with-encryption.worker.min.js

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/worker/pusher-with-encryption.worker.min.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/worker/pusher.worker.js

+14-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/worker/pusher.worker.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/worker/pusher.worker.min.js

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/worker/pusher.worker.min.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package-lock.json

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "pusher-js",
3-
"version": "8.3.0",
3+
"version": "8.4.0-rc1",
44
"description": "Pusher Channels JavaScript library for browsers, React Native, NodeJS and web workers",
55
"main": "dist/node/pusher.js",
66
"browser": "dist/web/pusher.js",

spec/javascripts/helpers/mocks.js

+1
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,7 @@ var Mocks = {
245245
manager.disconnect = jasmine.createSpy("disconnect");
246246
manager.send_event = jasmine.createSpy("send_event");
247247
manager.isUsingTLS = jasmine.createSpy("isUsingTLS").and.returnValue(false);
248+
manager.switchCluster = jasmine.createSpy("switchCluster");
248249
return manager;
249250
},
250251

spec/javascripts/integration/index.web.js

+14
Original file line numberDiff line numberDiff line change
@@ -59,5 +59,19 @@ function getTestConfigs() {
5959
testConfigs.push({ transport: "sockjs", forceTLS: true})
6060
testConfigs.push({ transport: "sockjs", forceTLS: false})
6161
}
62+
63+
// Test all forceTLS: false before forceTLS: true
64+
// Because browsers prevent a URL from downgrading from HTTPS to HTTP
65+
// This is probably the result of Strict-Transport-Security header returned when calling the HTTPS endpoint.
66+
testConfigs.sort((a, b) => {
67+
if (a.forceTLS == false && b.forceTLS == true) {
68+
return -1;
69+
} else if (a.forceTLS == true && b.forceTLS == false) {
70+
return 1;
71+
} else {
72+
return 0;
73+
}
74+
})
75+
6276
return testConfigs
6377
}

spec/javascripts/unit/core/connection/connection_manager_spec.js

+43
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,49 @@ describe("ConnectionManager", function() {
116116
});
117117
});
118118

119+
describe("#switchCluster", function() {
120+
it("should update cluster key", function() {
121+
expect(manager.key).toEqual("foo");
122+
manager.switchCluster("bar");
123+
expect(manager.key).toEqual("bar");
124+
});
125+
126+
it("should re-build the strategy", function() {
127+
expect(managerOptions.getStrategy.calls.count()).toEqual(1);
128+
manager.switchCluster("bar");
129+
expect(managerOptions.getStrategy.calls.count()).toEqual(2);
130+
expect(managerOptions.getStrategy).toHaveBeenCalledWith({
131+
key: "bar",
132+
useTLS: false,
133+
timeline: timeline
134+
});
135+
});
136+
137+
it("should try to connect using the strategy", function() {
138+
manager.switchCluster("bar");
139+
// connection is retried with a zero delay
140+
jasmine.clock().tick(0);
141+
expect(strategy.connect).toHaveBeenCalled();
142+
});
143+
144+
it("should transition to connecting", function() {
145+
var onConnecting = jasmine.createSpy("onConnecting");
146+
var onStateChange = jasmine.createSpy("onStateChange");
147+
manager.bind("connecting", onConnecting);
148+
manager.bind("state_change", onStateChange);
149+
150+
manager.switchCluster("bar");// connection is retried with a zero delay
151+
jasmine.clock().tick(0);
152+
153+
expect(manager.state).toEqual("connecting");
154+
expect(onConnecting).toHaveBeenCalled();
155+
expect(onStateChange).toHaveBeenCalledWith({
156+
previous: "initialized",
157+
current: "connecting"
158+
});
159+
});
160+
});
161+
119162
describe("before establishing a connection", function() {
120163
beforeEach(function() {
121164
manager.connect();

0 commit comments

Comments
 (0)