Skip to content

Commit 99d2f68

Browse files
authored
refactor: web socket url generation (#3319)
1 parent 1acfae0 commit 99d2f68

File tree

4 files changed

+69
-1
lines changed

4 files changed

+69
-1
lines changed

lib/utils/DevServerPlugin.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,10 @@ class DevServerPlugin {
5151
port = `&port=${options.client.port}`;
5252
} else if (options.webSocketServer.options.port && !isSockJSType) {
5353
port = `&port=${options.webSocketServer.options.port}`;
54-
} else {
54+
} else if (options.port) {
5555
port = `&port=${options.port}`;
56+
} else {
57+
port = '';
5658
}
5759

5860
/** @type {string} */

test/e2e/TransportMode.test.js

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,4 +94,54 @@ describe('transportMode client', () => {
9494
});
9595
});
9696
});
97+
98+
describe('unspecified port', () => {
99+
beforeAll((done) => {
100+
const options = {
101+
host: '0.0.0.0',
102+
hot: false,
103+
client: { transport: 'sockjs' },
104+
webSocketServer: 'sockjs',
105+
};
106+
testServer.startAwaitingCompilation(config, options, done);
107+
});
108+
109+
describe('on browser client', () => {
110+
it('logs correctly', (done) => {
111+
runBrowser().then(({ page, browser }) => {
112+
const res = [];
113+
page.goto(`http://localhost:8080/main`);
114+
page.on('console', ({ _text }) => {
115+
res.push(_text);
116+
});
117+
118+
page.waitForTimeout(initConsoleDelay).then(() => {
119+
testServer.close(() => {
120+
// make sure the client gets the close message
121+
page.waitForTimeout(awaitServerCloseDelay).then(() => {
122+
browser.close().then(() => {
123+
for (let i = res.length - 1; i >= 0; i--) {
124+
if (res[i] === '[webpack-dev-server] Disconnected!') {
125+
break;
126+
} else if (
127+
res[i] === 'close' ||
128+
res[i].includes('net::ERR_CONNECTION_REFUSED') ||
129+
// this indicates a WebSocket Error object that was logged
130+
res[i].includes('JSHandle@object')
131+
) {
132+
// remove additional logging for the now failing connection,
133+
// since this could be a variable number of error messages
134+
res.splice(i, 1);
135+
}
136+
}
137+
expect(res).toMatchSnapshot();
138+
done();
139+
});
140+
});
141+
});
142+
});
143+
});
144+
});
145+
});
146+
});
97147
});

test/e2e/__snapshots__/TransportMode.test.js.snap.webpack4

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,14 @@ Array [
2222
]
2323
`;
2424

25+
exports[`transportMode client unspecified port on browser client logs correctly 1`] = `
26+
Array [
27+
"Hey.",
28+
"[webpack-dev-server] Live Reloading enabled.",
29+
"[webpack-dev-server] Disconnected!",
30+
]
31+
`;
32+
2533
exports[`transportMode client ws on browser client logs correctly 1`] = `
2634
Array [
2735
"Hey.",

test/e2e/__snapshots__/TransportMode.test.js.snap.webpack5

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,14 @@ Array [
2222
]
2323
`;
2424

25+
exports[`transportMode client unspecified port on browser client logs correctly 1`] = `
26+
Array [
27+
"Hey.",
28+
"[webpack-dev-server] Live Reloading enabled.",
29+
"[webpack-dev-server] Disconnected!",
30+
]
31+
`;
32+
2533
exports[`transportMode client ws on browser client logs correctly 1`] = `
2634
Array [
2735
"Hey.",

0 commit comments

Comments
 (0)