diff --git a/client-src/clients/SockJSClient.ts b/client-src/clients/SockJSClient.ts deleted file mode 100644 index 68abbc1..0000000 --- a/client-src/clients/SockJSClient.ts +++ /dev/null @@ -1,41 +0,0 @@ -/** - * The following code is modified based on - * https://github.com/webpack/webpack-dev-server - * - * MIT Licensed - * Author Tobias Koppers @sokra - * Copyright (c) JS Foundation and other contributors - * https://github.com/webpack/webpack-dev-server/blob/main/LICENSE - */ - -import SockJS from '../modules/sockjs-client/index.js'; -import { CommunicationClient } from '../type.js'; -import { log } from '../utils/log.js'; - -export default class SockJSClient implements CommunicationClient { - sock: WebSocket; - constructor(url: string) { - // SockJS requires `http` and `https` protocols - this.sock = new SockJS( - url.replace(/^ws:/i, 'http:').replace(/^wss:/i, 'https:'), - ); - this.sock.onerror = (error) => { - log.error(error); - }; - } - - onOpen(fn: (...args: unknown[]) => void) { - this.sock.onopen = fn; - } - - onClose(fn: (...args: unknown[]) => void) { - this.sock.onclose = fn; - } - - // call f with the message string as the first argument - onMessage(fn: (...args: unknown[]) => void) { - this.sock.onmessage = (err) => { - fn(err.data); - }; - } -} diff --git a/client-src/modules/sockjs-client/index.ts b/client-src/modules/sockjs-client/index.ts deleted file mode 100644 index 1135890..0000000 --- a/client-src/modules/sockjs-client/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -/** - * The following code is modified based on - * https://github.com/webpack/webpack-dev-server - * - * MIT Licensed - * Author Tobias Koppers @sokra - * Copyright (c) JS Foundation and other contributors - * https://github.com/webpack/webpack-dev-server/blob/main/LICENSE - */ - -export { default } from 'sockjs-client'; diff --git a/package.json b/package.json index bfdec0c..010190e 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,6 @@ "@types/mime-types": "3.0.1", "@types/node": "^24.11.0", "@types/node-forge": "^1.3.14", - "@types/sockjs-client": "^1.5.4", "@types/trusted-types": "^2.0.7", "@types/ws": "8.18.1", "connect": "^3.7.0", @@ -85,7 +84,6 @@ "react-refresh": "0.18.0", "require-from-string": "^2.0.2", "simple-git-hooks": "^2.13.1", - "sockjs-client": "^1.6.1", "style-loader": "^4.0.0", "typescript": "^5.9.3", "webpack": "^5.105.3", @@ -96,7 +94,6 @@ "@types/connect-history-api-fallback": "^1.5.4", "@types/serve-index": "^1.9.4", "@types/serve-static": "^2.2.0", - "@types/sockjs": "^0.3.36", "@types/ws": "^8.18.1", "chokidar": "^3.6.0", "compression": "^1.8.1", @@ -109,7 +106,6 @@ "p-retry": "^7.1.1", "selfsigned": "^5.5.0", "serve-index": "^1.9.2", - "sockjs": "^0.3.24", "webpack-dev-middleware": "^7.4.5", "ws": "^8.19.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 68e4325..9d147a4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,9 +17,6 @@ importers: '@types/serve-static': specifier: ^2.2.0 version: 2.2.0 - '@types/sockjs': - specifier: ^0.3.36 - version: 0.3.36 '@types/ws': specifier: ^8.18.1 version: 8.18.1 @@ -56,9 +53,6 @@ importers: serve-index: specifier: ^1.9.2 version: 1.9.2 - sockjs: - specifier: ^0.3.24 - version: 0.3.24 webpack-dev-middleware: specifier: ^7.4.5 version: 7.4.5(tslib@2.8.1)(webpack@5.105.3) @@ -96,9 +90,6 @@ importers: '@types/node-forge': specifier: ^1.3.14 version: 1.3.14 - '@types/sockjs-client': - specifier: ^1.5.4 - version: 1.5.4 '@types/trusted-types': specifier: ^2.0.7 version: 2.0.7 @@ -135,9 +126,6 @@ importers: simple-git-hooks: specifier: ^2.13.1 version: 2.13.1 - sockjs-client: - specifier: ^1.6.1 - version: 1.6.1 style-loader: specifier: ^4.0.0 version: 4.0.0(webpack@5.105.3) @@ -710,12 +698,6 @@ packages: '@types/serve-static@2.2.0': resolution: {integrity: sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==} - '@types/sockjs-client@1.5.4': - resolution: {integrity: sha512-zk+uFZeWyvJ5ZFkLIwoGA/DfJ+pYzcZ8eH4H/EILCm2OBZyHH6Hkdna1/UWL/CFruh5wj6ES7g75SvUB0VsH5w==} - - '@types/sockjs@0.3.36': - resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} - '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} @@ -1076,14 +1058,6 @@ packages: supports-color: optional: true - debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} @@ -1228,10 +1202,6 @@ packages: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} - eventsource@2.0.2: - resolution: {integrity: sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==} - engines: {node: '>=12.0.0'} - exit-hook@4.0.0: resolution: {integrity: sha512-Fqs7ChZm72y40wKjOFXBKg7nJZvQJmewP5/7LtePDdnah/+FH9Hp5sgMujSCMPXlxOAW2//1jrW9pnsY7o20vQ==} engines: {node: '>=18'} @@ -1254,10 +1224,6 @@ packages: fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} - faye-websocket@0.11.4: - resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} - engines: {node: '>=0.8.0'} - fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} @@ -1377,9 +1343,6 @@ packages: resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} engines: {node: '>= 0.8'} - http-parser-js@0.5.8: - resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} - http-proxy-agent@7.0.2: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} @@ -1772,9 +1735,6 @@ packages: resolution: {integrity: sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==} engines: {node: '>=0.6'} - querystringify@2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} @@ -1902,13 +1862,6 @@ packages: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - sockjs-client@1.6.1: - resolution: {integrity: sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==} - engines: {node: '>=12'} - - sockjs@0.3.24: - resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} - socks-proxy-agent@8.0.5: resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} engines: {node: '>= 14'} @@ -2064,9 +2017,6 @@ packages: peerDependencies: browserslist: '>= 4.21.0' - url-parse@1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -2074,10 +2024,6 @@ packages: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} @@ -2116,14 +2062,6 @@ packages: webpack-cli: optional: true - websocket-driver@0.7.4: - resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} - engines: {node: '>=0.8.0'} - - websocket-extensions@0.1.4: - resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} - engines: {node: '>=0.8.0'} - which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -2773,12 +2711,6 @@ snapshots: '@types/http-errors': 2.0.4 '@types/node': 24.11.0 - '@types/sockjs-client@1.5.4': {} - - '@types/sockjs@0.3.36': - dependencies: - '@types/node': 24.11.0 - '@types/trusted-types@2.0.7': {} '@types/ws@8.18.1': @@ -3163,10 +3095,6 @@ snapshots: dependencies: ms: 2.0.0 - debug@3.2.7: - dependencies: - ms: 2.1.3 - debug@4.4.3: dependencies: ms: 2.1.3 @@ -3280,8 +3208,6 @@ snapshots: events@3.3.0: {} - eventsource@2.0.2: {} - exit-hook@4.0.0: {} express@5.2.1: @@ -3333,10 +3259,6 @@ snapshots: fast-uri@3.1.0: {} - faye-websocket@0.11.4: - dependencies: - websocket-driver: 0.7.4 - fd-slicer@1.1.0: dependencies: pend: 1.2.0 @@ -3466,8 +3388,6 @@ snapshots: statuses: 2.0.2 toidentifier: 1.0.1 - http-parser-js@0.5.8: {} - http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.4 @@ -3862,8 +3782,6 @@ snapshots: dependencies: side-channel: 1.1.0 - querystringify@2.2.0: {} - randombytes@2.1.0: dependencies: safe-buffer: 5.2.1 @@ -4012,22 +3930,6 @@ snapshots: smart-buffer@4.2.0: {} - sockjs-client@1.6.1: - dependencies: - debug: 3.2.7 - eventsource: 2.0.2 - faye-websocket: 0.11.4 - inherits: 2.0.4 - url-parse: 1.5.10 - transitivePeerDependencies: - - supports-color - - sockjs@0.3.24: - dependencies: - faye-websocket: 0.11.4 - uuid: 8.3.2 - websocket-driver: 0.7.4 - socks-proxy-agent@8.0.5: dependencies: agent-base: 7.1.4 @@ -4175,17 +4077,10 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 - url-parse@1.5.10: - dependencies: - querystringify: 2.2.0 - requires-port: 1.0.0 - util-deprecate@1.0.2: {} utils-merge@1.0.1: {} - uuid@8.3.2: {} - vary@1.1.2: {} watchpack@2.5.1: @@ -4248,14 +4143,6 @@ snapshots: - esbuild - uglify-js - websocket-driver@0.7.4: - dependencies: - http-parser-js: 0.5.8 - safe-buffer: 5.2.1 - websocket-extensions: 0.1.4 - - websocket-extensions@0.1.4: {} - which@2.0.2: dependencies: isexe: 2.0.0 diff --git a/scripts/build-client-modules.cjs b/scripts/build-client-modules.cjs index 5de4643..10a478c 100644 --- a/scripts/build-client-modules.cjs +++ b/scripts/build-client-modules.cjs @@ -115,20 +115,6 @@ const configs = [ ), ], }), - merge(baseForModules, { - entry: path.resolve( - __dirname, - '../client-src/modules/sockjs-client/index.ts', - ), - output: { - filename: 'sockjs-client/index.js', - library: { - name: 'SockJS', - type: 'umd', - }, - globalObject: "(typeof self !== 'undefined' ? self : this)", - }, - }), ]; const compiler = rspack(configs); diff --git a/src/server.ts b/src/server.ts index e752cd8..16a75ba 100644 --- a/src/server.ts +++ b/src/server.ts @@ -90,12 +90,7 @@ export interface Configuration< static?: boolean | string | Static | Array; server?: ServerType | ServerConfiguration; app?: () => Promise; - webSocketServer?: - | boolean - | 'sockjs' - | 'ws' - | string - | WebSocketServerConfiguration; + webSocketServer?: boolean | 'ws' | string | WebSocketServerConfiguration; proxy?: ProxyConfigArray; open?: boolean | string | Open | Array; setupExitSignals?: boolean; @@ -429,28 +424,17 @@ class Server< let hostname: string; - // SockJS is not supported server mode, so `hostname` and `port` can't specified, let's ignore them - const isSockJSType = webSocketServer.type === 'sockjs'; const isWebSocketServerHostDefined = typeof webSocketServer.options.host !== 'undefined'; const isWebSocketServerPortDefined = typeof webSocketServer.options.port !== 'undefined'; - if ( - isSockJSType && - (isWebSocketServerHostDefined || isWebSocketServerPortDefined) - ) { - this.logger.warn( - "SockJS only supports client mode and does not support custom hostname and port options. Please consider using 'ws' if you need to customize these options.", - ); - } - // We are proxying dev server and need to specify custom `hostname` if (typeof webSocketURL.hostname !== 'undefined') { hostname = webSocketURL.hostname; } - // Web socket server works on custom `hostname`, only for `ws` because `sock-js` is not support custom `hostname` - else if (isWebSocketServerHostDefined && !isSockJSType) { + // Web socket server works on custom `hostname` + else if (isWebSocketServerHostDefined) { hostname = webSocketServer.options.host; } // The `host` option is specified @@ -470,8 +454,8 @@ class Server< if (typeof webSocketURL.port !== 'undefined') { port = webSocketURL.port; } - // Web socket server works on custom `port`, only for `ws` because `sock-js` is not support custom `port` - else if (isWebSocketServerPortDefined && !isSockJSType) { + // Web socket server works on custom `port` + else if (isWebSocketServerPortDefined) { port = webSocketServer.options.port; } // The `port` option is specified @@ -499,12 +483,8 @@ class Server< pathname = webSocketURL.pathname; } // Web socket server works on custom `path` - else if ( - typeof webSocketServer.options.prefix !== 'undefined' || - typeof webSocketServer.options.path !== 'undefined' - ) { - pathname = - webSocketServer.options.prefix || webSocketServer.options.path; + else if (typeof webSocketServer.options.path !== 'undefined') { + pathname = webSocketServer.options.path; } searchParams.set('pathname', pathname); @@ -1238,9 +1218,7 @@ class Server< typeof (this.options.webSocketServer as WebSocketServerConfiguration) .type === 'string' && // @ts-expect-error - (this.options.webSocketServer.type === 'ws' || - (this.options.webSocketServer as WebSocketServerConfiguration).type === - 'sockjs'); + this.options.webSocketServer.type === 'ws'; let clientTransport: string | undefined; @@ -1264,11 +1242,14 @@ class Server< switch (typeof clientTransport) { case 'string': - // could be 'sockjs', 'ws', or a path that should be required + // could be 'ws' or a path that should be required if (clientTransport === 'sockjs') { - clientImplementation = - require.resolve('../client/clients/SockJSClient'); - } else if (clientTransport === 'ws') { + throw new Error( + "SockJS support has been removed. Please set client.webSocketTransport to 'ws' or provide a custom transport implementation path.", + ); + } + + if (clientTransport === 'ws') { clientImplementation = require.resolve('../client/clients/WebSocketClient'); } else { @@ -1289,7 +1270,7 @@ class Server< !isKnownWebSocketServerImplementation ? 'When you use custom web socket implementation you must explicitly specify client.webSocketTransport. ' : '' - }client.webSocketTransport must be a string denoting a default implementation (e.g. 'sockjs', 'ws') or a full path to a JS file via require.resolve(...) which exports a class `, + }client.webSocketTransport must be a string denoting a default implementation (e.g. 'ws') or a full path to a JS file via require.resolve(...) which exports a class `, ); } @@ -1297,23 +1278,24 @@ class Server< } getServerTransport() { - let implementation: - | typeof import('./servers/SockJSServer') - | typeof import('./servers/WebsocketServer') - | undefined; + let implementation: typeof import('./servers/WebsocketServer') | undefined; let implementationFound = true; switch ( typeof (this.options.webSocketServer as WebSocketServerConfiguration).type ) { case 'string': - // Could be 'sockjs', in the future 'ws', or a path that should be required + // Could be 'ws' or a path that should be required if ( (this.options.webSocketServer as WebSocketServerConfiguration) .type === 'sockjs' ) { - implementation = require('./servers/SockJSServer'); - } else if ( + throw new Error( + "SockJS support has been removed. Please set webSocketServer to 'ws' or provide a custom WebSocket server implementation.", + ); + } + + if ( (this.options.webSocketServer as WebSocketServerConfiguration) .type === 'ws' ) { @@ -1340,7 +1322,7 @@ class Server< if (!implementationFound) { throw new Error( - "webSocketServer (webSocketServer.type) must be a string denoting a default implementation (e.g. 'ws', 'sockjs'), a full path to " + + "webSocketServer (webSocketServer.type) must be a string denoting a default implementation (e.g. 'ws'), a full path to " + 'a JS file which exports a class extending BaseServer (webpack-dev-server/lib/servers/BaseServer.js) ' + 'via require.resolve(...), or the class itself which extends BaseServer', ); @@ -1678,50 +1660,6 @@ class Server< middleware: this.middleware as MiddlewareHandler, }); - // Should be after `webpack-dev-middleware`, otherwise other middlewares might rewrite response - middlewares.push({ - name: 'rspack-dev-server-sockjs-bundle', - path: '/__rspack_dev_server__/sockjs.bundle.js', - middleware: (req: Request, res: Response, next: NextFunction) => { - if (req.method !== 'GET' && req.method !== 'HEAD') { - next(); - return; - } - - const clientPath = path.join( - __dirname, - '../', - 'client/modules/sockjs-client/index.js', - ); - - // Express send Etag and other headers by default, so let's keep them for compatibility reasons - if (typeof res.sendFile === 'function') { - res.sendFile(clientPath); - return; - } - - let stats: fs.Stats; - - try { - // TODO implement `inputFileSystem.createReadStream` in webpack - stats = fs.statSync(clientPath); - } catch { - next(); - return; - } - - res.setHeader('Content-Type', 'application/javascript; charset=UTF-8'); - res.setHeader('Content-Length', stats.size); - - if (req.method === 'HEAD') { - res.end(); - return; - } - - fs.createReadStream(clientPath).pipe(res); - }, - }); - middlewares.push({ name: 'rspack-dev-server-invalidate', path: '/rspack-dev-server/invalidate', @@ -2154,10 +2092,7 @@ class Server< const headers = typeof request !== 'undefined' ? (request.headers as { [key: string]: string | undefined }) - : typeof (client as unknown as import('sockjs').Connection) - .headers !== 'undefined' - ? (client as unknown as import('sockjs').Connection).headers - : undefined; + : undefined; if (!headers) { this.logger.warn( @@ -2562,8 +2497,7 @@ class Server< params?: EXPECTED_ANY, ) { for (const client of clients) { - // `sockjs` uses `1` to indicate client is ready to accept data - // `ws` uses `WebSocket.OPEN`, but it is mean `1` too + // `ws` uses `WebSocket.OPEN` to indicate client is ready to accept data if (client.readyState === 1) { client.send(JSON.stringify({ type, data, params })); } diff --git a/src/servers/SockJSServer.ts b/src/servers/SockJSServer.ts deleted file mode 100644 index d983313..0000000 --- a/src/servers/SockJSServer.ts +++ /dev/null @@ -1,124 +0,0 @@ -/** - * The following code is modified based on - * https://github.com/webpack/webpack-dev-server - * - * MIT Licensed - * Author Tobias Koppers @sokra - * Copyright (c) JS Foundation and other contributors - * https://github.com/webpack/webpack-dev-server/blob/main/LICENSE - */ - -import * as sockjs from 'sockjs'; -import type { Server } from '../server'; -import type { - ClientConnection, - EXPECTED_ANY, - WebSocketServerConfiguration, -} from '../types'; -import BaseServer from './BaseServer'; - -// Workaround for sockjs@~0.3.19 -// sockjs will remove Origin header, however Origin header is required for checking host. -// See https://github.com/webpack/webpack-dev-server/issues/1604 for more information -{ - const SockjsSession = require('sockjs/lib/transport').Session; - - const { decorateConnection } = SockjsSession.prototype; - - // eslint-disable-next-line func-names - SockjsSession.prototype.decorateConnection = function ( - req: import('http').IncomingMessage, - ) { - decorateConnection.call(this, req); - - const { connection } = this; - - if ( - connection.headers && - !('origin' in connection.headers) && - 'origin' in req.headers - ) { - connection.headers.origin = req.headers.origin; - } - }; -} - -class SockJSServer extends BaseServer { - implementation: sockjs.Server & { close?: (callback: () => void) => void }; - - // options has: error (function), debug (function), server (http/s server), path (string) - constructor(server: Server) { - super(server); - - const webSocketServerOptions = ( - this.server.options.webSocketServer as WebSocketServerConfiguration - ).options as NonNullable; - - const getSockjsUrl = ( - options: NonNullable, - ): string => { - if (typeof options.sockjsUrl !== 'undefined') { - return options.sockjsUrl; - } - - return '/__rspack_dev_server__/sockjs.bundle.js'; - }; - - this.implementation = sockjs.createServer({ - // Use provided up-to-date sockjs-client - // eslint-disable-next-line camelcase - sockjs_url: getSockjsUrl(webSocketServerOptions), - // Default logger is very annoy. Limit useless logs. - log: (severity: string, line: string) => { - if (severity === 'error') { - this.server.logger.error(line); - } else if (severity === 'info') { - this.server.logger.log(line); - } else { - this.server.logger.debug(line); - } - }, - }); - - const getPrefix = ( - options: sockjs.ServerOptions & { path?: string }, - ): string | undefined => { - if (typeof options.prefix !== 'undefined') { - return options.prefix; - } - - return options.path; - }; - - const options = { - ...webSocketServerOptions, - prefix: getPrefix(webSocketServerOptions), - }; - - this.implementation.installHandlers( - this.server.server as import('http').Server, - options, - ); - - this.implementation.on('connection', (client: EXPECTED_ANY) => { - // Implement the the same API as for `ws` - client.send = client.write; - client.terminate = client.close; - - this.clients.push(client as ClientConnection); - - client.on('close', () => { - this.clients.splice( - this.clients.indexOf(client as ClientConnection), - 1, - ); - }); - }); - - this.implementation.close = (callback: () => void) => { - callback(); - }; - } -} - -module.exports = SockJSServer; diff --git a/src/types.ts b/src/types.ts index 3740856..a038937 100644 --- a/src/types.ts +++ b/src/types.ts @@ -134,24 +134,13 @@ export interface ServerConfiguration< } export interface WebSocketServerConfiguration { - type?: 'sockjs' | 'ws' | string | (() => WebSocketServerConfiguration); + type?: 'ws' | string | (() => WebSocketServerConfiguration); options?: Record; } -export type ClientConnection = ( - | import('ws').WebSocket - | (import('sockjs').Connection & { - send: import('ws').WebSocket['send']; - terminate: import('ws').WebSocket['terminate']; - ping: import('ws').WebSocket['ping']; - }) -) & { isAlive?: boolean }; - -export type WebSocketServer = - | import('ws').WebSocketServer - | (import('sockjs').Server & { - close: import('ws').WebSocketServer['close']; - }); +export type ClientConnection = import('ws').WebSocket & { isAlive?: boolean }; + +export type WebSocketServer = import('ws').WebSocketServer; export interface WebSocketServerImplementation { implementation: WebSocketServer; @@ -210,7 +199,7 @@ export interface ClientConfiguration { }; progress?: boolean; reconnect?: boolean | number; - webSocketTransport?: 'ws' | 'sockjs' | string; + webSocketTransport?: 'ws' | string; webSocketURL?: string | WebSocketURL; } diff --git a/tests/e2e/__snapshots__/allowed-hosts.test.js.snap b/tests/e2e/__snapshots__/allowed-hosts.test.js.snap index 72f2c0f..c3003ee 100644 --- a/tests/e2e/__snapshots__/allowed-hosts.test.js.snap +++ b/tests/e2e/__snapshots__/allowed-hosts.test.js.snap @@ -42,16 +42,6 @@ exports[`allowed hosts > check host headers > should always allow value of the \ exports[`allowed hosts > check host headers > should always allow value of the \`host\` option from the \`client.webSocketURL\` option if options.allowedHosts is auto > response status 1`] = `200`; -exports[`allowed hosts > should connect web socket client using "[::1] host to web socket server with the "auto" value ("sockjs") > console messages 1`] = ` -[ - "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", - "[HMR] Waiting for update signal from WDS...", - "Hey.", -] -`; - -exports[`allowed hosts > should connect web socket client using "[::1] host to web socket server with the "auto" value ("sockjs") > page errors 1`] = `[]`; - exports[`allowed hosts > should connect web socket client using "[::1] host to web socket server with the "auto" value ("ws") > console messages 1`] = ` [ "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", @@ -62,16 +52,6 @@ exports[`allowed hosts > should connect web socket client using "[::1] host to w exports[`allowed hosts > should connect web socket client using "[::1] host to web socket server with the "auto" value ("ws") > page errors 1`] = `[]`; -exports[`allowed hosts > should connect web socket client using "0.0.0.0" host to web socket server with the "auto" value ("sockjs") > console messages 1`] = ` -[ - "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", - "[HMR] Waiting for update signal from WDS...", - "Hey.", -] -`; - -exports[`allowed hosts > should connect web socket client using "0.0.0.0" host to web socket server with the "auto" value ("sockjs") > page errors 1`] = `[]`; - exports[`allowed hosts > should connect web socket client using "0.0.0.0" host to web socket server with the "auto" value ("ws") > console messages 1`] = ` [ "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", @@ -82,16 +62,6 @@ exports[`allowed hosts > should connect web socket client using "0.0.0.0" host t exports[`allowed hosts > should connect web socket client using "0.0.0.0" host to web socket server with the "auto" value ("ws") > page errors 1`] = `[]`; -exports[`allowed hosts > should connect web socket client using "127.0.0.1" host to web socket server by default ("sockjs") > console messages 1`] = ` -[ - "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", - "[HMR] Waiting for update signal from WDS...", - "Hey.", -] -`; - -exports[`allowed hosts > should connect web socket client using "127.0.0.1" host to web socket server by default ("sockjs") > page errors 1`] = `[]`; - exports[`allowed hosts > should connect web socket client using "127.0.0.1" host to web socket server by default ("ws") > console messages 1`] = ` [ "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", @@ -102,16 +72,6 @@ exports[`allowed hosts > should connect web socket client using "127.0.0.1" host exports[`allowed hosts > should connect web socket client using "127.0.0.1" host to web socket server by default ("ws") > page errors 1`] = `[]`; -exports[`allowed hosts > should connect web socket client using "127.0.0.1" host to web socket server with the "auto" value ("sockjs") > console messages 1`] = ` -[ - "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", - "[HMR] Waiting for update signal from WDS...", - "Hey.", -] -`; - -exports[`allowed hosts > should connect web socket client using "127.0.0.1" host to web socket server with the "auto" value ("sockjs") > page errors 1`] = `[]`; - exports[`allowed hosts > should connect web socket client using "127.0.0.1" host to web socket server with the "auto" value ("ws") > console messages 1`] = ` [ "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", @@ -122,16 +82,6 @@ exports[`allowed hosts > should connect web socket client using "127.0.0.1" host exports[`allowed hosts > should connect web socket client using "127.0.0.1" host to web socket server with the "auto" value ("ws") > page errors 1`] = `[]`; -exports[`allowed hosts > should connect web socket client using "chrome-extension:" protocol to web socket server with the "auto" value ("sockjs") > console messages 1`] = ` -[ - "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", - "[HMR] Waiting for update signal from WDS...", - "Hey.", -] -`; - -exports[`allowed hosts > should connect web socket client using "chrome-extension:" protocol to web socket server with the "auto" value ("sockjs") > page errors 1`] = `[]`; - exports[`allowed hosts > should connect web socket client using "chrome-extension:" protocol to web socket server with the "auto" value ("ws") > console messages 1`] = ` [ "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", @@ -142,16 +92,6 @@ exports[`allowed hosts > should connect web socket client using "chrome-extensio exports[`allowed hosts > should connect web socket client using "chrome-extension:" protocol to web socket server with the "auto" value ("ws") > page errors 1`] = `[]`; -exports[`allowed hosts > should connect web socket client using "file:" protocol to web socket server with the "auto" value ("sockjs") > console messages 1`] = ` -[ - "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", - "[HMR] Waiting for update signal from WDS...", - "Hey.", -] -`; - -exports[`allowed hosts > should connect web socket client using "file:" protocol to web socket server with the "auto" value ("sockjs") > page errors 1`] = `[]`; - exports[`allowed hosts > should connect web socket client using "file:" protocol to web socket server with the "auto" value ("ws") > console messages 1`] = ` [ "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", @@ -162,16 +102,6 @@ exports[`allowed hosts > should connect web socket client using "file:" protocol exports[`allowed hosts > should connect web socket client using "file:" protocol to web socket server with the "auto" value ("ws") > page errors 1`] = `[]`; -exports[`allowed hosts > should connect web socket client using "localhost" host to web socket server by default ("sockjs") > console messages 1`] = ` -[ - "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", - "[HMR] Waiting for update signal from WDS...", - "Hey.", -] -`; - -exports[`allowed hosts > should connect web socket client using "localhost" host to web socket server by default ("sockjs") > page errors 1`] = `[]`; - exports[`allowed hosts > should connect web socket client using "localhost" host to web socket server by default ("ws") > console messages 1`] = ` [ "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", @@ -182,16 +112,6 @@ exports[`allowed hosts > should connect web socket client using "localhost" host exports[`allowed hosts > should connect web socket client using "localhost" host to web socket server by default ("ws") > page errors 1`] = `[]`; -exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the "all" value ("sockjs") > console messages 1`] = ` -[ - "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", - "[HMR] Waiting for update signal from WDS...", - "Hey.", -] -`; - -exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the "all" value ("sockjs") > page errors 1`] = `[]`; - exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the "all" value ("ws") > console messages 1`] = ` [ "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", @@ -202,16 +122,6 @@ exports[`allowed hosts > should connect web socket client using custom hostname exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the "all" value ("ws") > page errors 1`] = `[]`; -exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the "all" value in array ("sockjs") > console messages 1`] = ` -[ - "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", - "[HMR] Waiting for update signal from WDS...", - "Hey.", -] -`; - -exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the "all" value in array ("sockjs") > page errors 1`] = `[]`; - exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the "all" value in array ("ws") > console messages 1`] = ` [ "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", @@ -222,16 +132,6 @@ exports[`allowed hosts > should connect web socket client using custom hostname exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the "all" value in array ("ws") > page errors 1`] = `[]`; -exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the custom hostname value ("sockjs") > console messages 1`] = ` -[ - "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", - "[HMR] Waiting for update signal from WDS...", - "Hey.", -] -`; - -exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the custom hostname value ("sockjs") > page errors 1`] = `[]`; - exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the custom hostname value ("ws") > console messages 1`] = ` [ "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", @@ -242,16 +142,6 @@ exports[`allowed hosts > should connect web socket client using custom hostname exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the custom hostname value ("ws") > page errors 1`] = `[]`; -exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the custom hostname value starting with dot ("sockjs") > console messages 1`] = ` -[ - "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", - "[HMR] Waiting for update signal from WDS...", - "Hey.", -] -`; - -exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the custom hostname value starting with dot ("sockjs") > page errors 1`] = `[]`; - exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the custom hostname value starting with dot ("ws") > console messages 1`] = ` [ "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", @@ -262,16 +152,6 @@ exports[`allowed hosts > should connect web socket client using custom hostname exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the custom hostname value starting with dot ("ws") > page errors 1`] = `[]`; -exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the multiple custom hostname values ("sockjs") > console messages 1`] = ` -[ - "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", - "[HMR] Waiting for update signal from WDS...", - "Hey.", -] -`; - -exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the multiple custom hostname values ("sockjs") > page errors 1`] = `[]`; - exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the multiple custom hostname values ("ws") > console messages 1`] = ` [ "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", @@ -282,16 +162,6 @@ exports[`allowed hosts > should connect web socket client using custom hostname exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the multiple custom hostname values ("ws") > page errors 1`] = `[]`; -exports[`allowed hosts > should connect web socket client using custom sub hostname to web socket server with the custom hostname value ("sockjs") > console messages 1`] = ` -[ - "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", - "[HMR] Waiting for update signal from WDS...", - "Hey.", -] -`; - -exports[`allowed hosts > should connect web socket client using custom sub hostname to web socket server with the custom hostname value ("sockjs") > page errors 1`] = `[]`; - exports[`allowed hosts > should connect web socket client using custom sub hostname to web socket server with the custom hostname value ("ws") > console messages 1`] = ` [ "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", @@ -302,16 +172,6 @@ exports[`allowed hosts > should connect web socket client using custom sub hostn exports[`allowed hosts > should connect web socket client using custom sub hostname to web socket server with the custom hostname value ("ws") > page errors 1`] = `[]`; -exports[`allowed hosts > should connect web socket client using localhost to web socket server with the "auto" value ("sockjs") > console messages 1`] = ` -[ - "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", - "[HMR] Waiting for update signal from WDS...", - "Hey.", -] -`; - -exports[`allowed hosts > should connect web socket client using localhost to web socket server with the "auto" value ("sockjs") > page errors 1`] = `[]`; - exports[`allowed hosts > should connect web socket client using localhost to web socket server with the "auto" value ("ws") > console messages 1`] = ` [ "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", @@ -322,16 +182,6 @@ exports[`allowed hosts > should connect web socket client using localhost to web exports[`allowed hosts > should connect web socket client using localhost to web socket server with the "auto" value ("ws") > page errors 1`] = `[]`; -exports[`allowed hosts > should connect web socket client using origin header containing an IP address with the custom hostname value ("sockjs") > (work) console messages 1`] = ` -[ - "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", - "[HMR] Waiting for update signal from WDS...", - "Hey.", -] -`; - -exports[`allowed hosts > should connect web socket client using origin header containing an IP address with the custom hostname value ("sockjs") > (work) page errors 1`] = `[]`; - exports[`allowed hosts > should connect web socket client using origin header containing an IP address with the custom hostname value ("ws") > (work) console messages 1`] = ` [ "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", @@ -342,16 +192,6 @@ exports[`allowed hosts > should connect web socket client using origin header co exports[`allowed hosts > should connect web socket client using origin header containing an IP address with the custom hostname value ("ws") > (work) page errors 1`] = `[]`; -exports[`allowed hosts > should disconnect web client using localhost to web socket server with the "auto" value ("sockjs") > console messages 1`] = ` -[ - "Failed to load resource: the server responded with a status of 403 (Forbidden)", -] -`; - -exports[`allowed hosts > should disconnect web client using localhost to web socket server with the "auto" value ("sockjs") > html 1`] = `"
Invalid Host header
"`; - -exports[`allowed hosts > should disconnect web client using localhost to web socket server with the "auto" value ("sockjs") > page errors 1`] = `[]`; - exports[`allowed hosts > should disconnect web client using localhost to web socket server with the "auto" value ("ws") > console messages 1`] = ` [ "Failed to load resource: the server responded with a status of 403 (Forbidden)", @@ -362,19 +202,6 @@ exports[`allowed hosts > should disconnect web client using localhost to web soc exports[`allowed hosts > should disconnect web client using localhost to web socket server with the "auto" value ("ws") > page errors 1`] = `[]`; -exports[`allowed hosts > should disconnect web client using origin header containing an IP address with the "auto" value ("sockjs") > (work) console messages 1`] = ` -[ - "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", - "[HMR] Waiting for update signal from WDS...", - "Hey.", - "[rspack-dev-server] Invalid Host/Origin header", - "[rspack-dev-server] Disconnected!", - "[rspack-dev-server] Trying to reconnect...", -] -`; - -exports[`allowed hosts > should disconnect web client using origin header containing an IP address with the "auto" value ("sockjs") > (work) page errors 1`] = `[]`; - exports[`allowed hosts > should disconnect web client using origin header containing an IP address with the "auto" value ("ws") > (work) console messages 1`] = ` [ "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", @@ -388,19 +215,6 @@ exports[`allowed hosts > should disconnect web client using origin header contai exports[`allowed hosts > should disconnect web client using origin header containing an IP address with the "auto" value ("ws") > (work) page errors 1`] = `[]`; -exports[`allowed hosts > should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "host" header ("sockjs") > console messages 1`] = ` -[ - "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", - "[HMR] Waiting for update signal from WDS...", - "Hey.", - "[rspack-dev-server] Invalid Host/Origin header", - "[rspack-dev-server] Disconnected!", - "[rspack-dev-server] Trying to reconnect...", -] -`; - -exports[`allowed hosts > should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "host" header ("sockjs") > page errors 1`] = `[]`; - exports[`allowed hosts > should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "host" header ("ws") > console messages 1`] = ` [ "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", @@ -414,19 +228,6 @@ exports[`allowed hosts > should disconnect web socket client using custom hostna exports[`allowed hosts > should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "host" header ("ws") > page errors 1`] = `[]`; -exports[`allowed hosts > should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "host" header when "server: 'https'" is enabled ("sockjs") > console messages 1`] = ` -[ - "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", - "[HMR] Waiting for update signal from WDS...", - "Hey.", - "[rspack-dev-server] Invalid Host/Origin header", - "[rspack-dev-server] Disconnected!", - "[rspack-dev-server] Trying to reconnect...", -] -`; - -exports[`allowed hosts > should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "host" header when "server: 'https'" is enabled ("sockjs") > page errors 1`] = `[]`; - exports[`allowed hosts > should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "host" header when "server: 'https'" is enabled ("ws") > console messages 1`] = ` [ "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", @@ -440,19 +241,6 @@ exports[`allowed hosts > should disconnect web socket client using custom hostna exports[`allowed hosts > should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "host" header when "server: 'https'" is enabled ("ws") > page errors 1`] = `[]`; -exports[`allowed hosts > should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "origin" header ("sockjs") > console messages 1`] = ` -[ - "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", - "[HMR] Waiting for update signal from WDS...", - "Hey.", - "[rspack-dev-server] Invalid Host/Origin header", - "[rspack-dev-server] Disconnected!", - "[rspack-dev-server] Trying to reconnect...", -] -`; - -exports[`allowed hosts > should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "origin" header ("sockjs") > page errors 1`] = `[]`; - exports[`allowed hosts > should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "origin" header ("ws") > console messages 1`] = ` [ "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", diff --git a/tests/e2e/__snapshots__/api.test.js.snap b/tests/e2e/__snapshots__/api.test.js.snap index e0976ce..109c28d 100644 --- a/tests/e2e/__snapshots__/api.test.js.snap +++ b/tests/e2e/__snapshots__/api.test.js.snap @@ -28,7 +28,7 @@ exports[`API > Server.checkHostHeader > should allow URLs with scheme for checki exports[`API > Server.checkHostHeader > should allow URLs with scheme for checking origin when the "option.client.webSocketURL" is object > response status 1`] = `200`; -exports[`API > Server.checkHostHeader > should allow URLs with scheme for checking origin when the "option.client.webSocketURL" is object > web socket URL 1`] = `"ws://test.host:8156/ws"`; +exports[`API > Server.checkHostHeader > should allow URLs with scheme for checking origin when the "option.client.webSocketURL" is object > web socket URL 1`] = `"ws://test.host:8154/ws"`; exports[`API > Server.getFreePort > should retry finding the port for up to defaultPortRetry times (number) > console messages 1`] = ` [ diff --git a/tests/e2e/__snapshots__/built-in-routes.test.js.snap b/tests/e2e/__snapshots__/built-in-routes.test.js.snap index 2fdbdba..9acbba4 100644 --- a/tests/e2e/__snapshots__/built-in-routes.test.js.snap +++ b/tests/e2e/__snapshots__/built-in-routes.test.js.snap @@ -65,19 +65,3 @@ exports[`Built in routes > with simple config > should handle HEAD request to ma exports[`Built in routes > with simple config > should handle HEAD request to magic async chunk > response headers content-type 1`] = `"text/javascript; charset=utf-8"`; exports[`Built in routes > with simple config > should handle HEAD request to magic async chunk > response status 1`] = `200`; - -exports[`Built in routes > with simple config > should handles GET request to sockjs bundle > console messages 1`] = `[]`; - -exports[`Built in routes > with simple config > should handles GET request to sockjs bundle > page errors 1`] = `[]`; - -exports[`Built in routes > with simple config > should handles GET request to sockjs bundle > response headers content-type 1`] = `"text/javascript; charset=utf-8"`; - -exports[`Built in routes > with simple config > should handles GET request to sockjs bundle > response status 1`] = `200`; - -exports[`Built in routes > with simple config > should handles HEAD request to sockjs bundle > console messages 1`] = `[]`; - -exports[`Built in routes > with simple config > should handles HEAD request to sockjs bundle > page errors 1`] = `[]`; - -exports[`Built in routes > with simple config > should handles HEAD request to sockjs bundle > response headers content-type 1`] = `"text/javascript; charset=utf-8"`; - -exports[`Built in routes > with simple config > should handles HEAD request to sockjs bundle > response status 1`] = `200`; diff --git a/tests/e2e/__snapshots__/client-reconnect.test.js.snap b/tests/e2e/__snapshots__/client-reconnect.test.js.snap index 13087c1..d3a5dc1 100644 --- a/tests/e2e/__snapshots__/client-reconnect.test.js.snap +++ b/tests/e2e/__snapshots__/client-reconnect.test.js.snap @@ -20,10 +20,10 @@ exports[`client.reconnect option > specified as number > should try to reconnect "Hey.", "[rspack-dev-server] Disconnected!", "[rspack-dev-server] Trying to reconnect...", - "WebSocket connection to 'ws://127.0.0.1:8161/ws' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED", + "WebSocket connection to 'ws://127.0.0.1:8159/ws' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED", "[rspack-dev-server] [object Event]", "[rspack-dev-server] Trying to reconnect...", - "WebSocket connection to 'ws://127.0.0.1:8161/ws' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED", + "WebSocket connection to 'ws://127.0.0.1:8159/ws' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED", "[rspack-dev-server] [object Event]", ] `; diff --git a/tests/e2e/__snapshots__/client.test.js.snap b/tests/e2e/__snapshots__/client.test.js.snap index 53b1a04..46e9746 100644 --- a/tests/e2e/__snapshots__/client.test.js.snap +++ b/tests/e2e/__snapshots__/client.test.js.snap @@ -12,16 +12,4 @@ exports[`client option > configure client entry > should redirect client entry t exports[`client option > configure client entry > should redirect client entry to rspack > response status 1`] = `200`; -exports[`client option > default behaviour > responds with a 200 status code for /ws path > console messages 1`] = `[]`; - -exports[`client option > default behaviour > responds with a 200 status code for /ws path > page errors 1`] = `[]`; - -exports[`client option > default behaviour > responds with a 200 status code for /ws path > response status 1`] = `200`; - exports[`client option > override client entry > should disable client entry > response status 1`] = `200`; - -exports[`client option > should respect path option > responds with a 200 status code for /foo/test/bar path > console messages 1`] = `[]`; - -exports[`client option > should respect path option > responds with a 200 status code for /foo/test/bar path > page errors 1`] = `[]`; - -exports[`client option > should respect path option > responds with a 200 status code for /foo/test/bar path > response status 1`] = `200`; diff --git a/tests/e2e/__snapshots__/hot-and-live-reload.test.js.snap b/tests/e2e/__snapshots__/hot-and-live-reload.test.js.snap index a1bcdb8..c624428 100644 --- a/tests/e2e/__snapshots__/hot-and-live-reload.test.js.snap +++ b/tests/e2e/__snapshots__/hot-and-live-reload.test.js.snap @@ -9,15 +9,6 @@ exports[`hot and live reload > should not refresh content when hot and no live r exports[`hot and live reload > should not refresh content when hot and no live reload disabled (default) > page errors 1`] = `[]`; -exports[`hot and live reload > should not refresh content when hot and no live reload disabled (sockjs) > console messages 1`] = ` -[ - [rspack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading disabled, Progress disabled, Overlay enabled., - [rspack-dev-server] App updated. Recompiling..., -] -`; - -exports[`hot and live reload > should not refresh content when hot and no live reload disabled (sockjs) > page errors 1`] = `[]`; - exports[`hot and live reload > should not refresh content when hot and no live reload disabled (ws) > console messages 1`] = ` [ [rspack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading disabled, Progress disabled, Overlay enabled., @@ -97,23 +88,6 @@ exports[`hot and live reload > should work and refresh content using hot module exports[`hot and live reload > should work and refresh content using hot module replacement when hot enabled (default) > page errors 1`] = `[]`; -exports[`hot and live reload > should work and refresh content using hot module replacement when hot enabled (sockjs) > console messages 1`] = ` -[ - [rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled., - [HMR] Waiting for update signal from WDS..., - [rspack-dev-server] App updated. Recompiling..., - [rspack-dev-server] App hot update..., - [HMR] Checking for updates on the server..., - [HMR] Updated modules:, - [HMR] - ./main.css, - [HMR] - /cjs.js!./main.css, - , - [HMR] App is up to date., -] -`; - -exports[`hot and live reload > should work and refresh content using hot module replacement when hot enabled (sockjs) > page errors 1`] = `[]`; - exports[`hot and live reload > should work and refresh content using hot module replacement when hot enabled (ws) > console messages 1`] = ` [ [rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled., @@ -131,23 +105,6 @@ exports[`hot and live reload > should work and refresh content using hot module exports[`hot and live reload > should work and refresh content using hot module replacement when hot enabled (ws) > page errors 1`] = `[]`; -exports[`hot and live reload > should work and refresh content using hot module replacement when live reload and hot enabled (sockjs) > console messages 1`] = ` -[ - [rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled., - [HMR] Waiting for update signal from WDS..., - [rspack-dev-server] App updated. Recompiling..., - [rspack-dev-server] App hot update..., - [HMR] Checking for updates on the server..., - [HMR] Updated modules:, - [HMR] - ./main.css, - [HMR] - /cjs.js!./main.css, - , - [HMR] App is up to date., -] -`; - -exports[`hot and live reload > should work and refresh content using hot module replacement when live reload and hot enabled (sockjs) > page errors 1`] = `[]`; - exports[`hot and live reload > should work and refresh content using hot module replacement when live reload and hot enabled (ws) > console messages 1`] = ` [ [rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled., @@ -182,23 +139,6 @@ exports[`hot and live reload > should work and refresh content using hot module exports[`hot and live reload > should work and refresh content using hot module replacement when live reload disabled and hot enabled (default) > page errors 1`] = `[]`; -exports[`hot and live reload > should work and refresh content using hot module replacement when live reload disabled and hot enabled (sockjs) > console messages 1`] = ` -[ - [rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading disabled, Progress disabled, Overlay enabled., - [HMR] Waiting for update signal from WDS..., - [rspack-dev-server] App updated. Recompiling..., - [rspack-dev-server] App hot update..., - [HMR] Checking for updates on the server..., - [HMR] Updated modules:, - [HMR] - ./main.css, - [HMR] - /cjs.js!./main.css, - , - [HMR] App is up to date., -] -`; - -exports[`hot and live reload > should work and refresh content using hot module replacement when live reload disabled and hot enabled (sockjs) > page errors 1`] = `[]`; - exports[`hot and live reload > should work and refresh content using hot module replacement when live reload disabled and hot enabled (ws) > console messages 1`] = ` [ [rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading disabled, Progress disabled, Overlay enabled., @@ -233,23 +173,6 @@ exports[`hot and live reload > should work and refresh content using hot module exports[`hot and live reload > should work and refresh content using hot module replacement when live reload enabled (default) > page errors 1`] = `[]`; -exports[`hot and live reload > should work and refresh content using hot module replacement when live reload enabled (sockjs) > console messages 1`] = ` -[ - [rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled., - [HMR] Waiting for update signal from WDS..., - [rspack-dev-server] App updated. Recompiling..., - [rspack-dev-server] App hot update..., - [HMR] Checking for updates on the server..., - [HMR] Updated modules:, - [HMR] - ./main.css, - [HMR] - /cjs.js!./main.css, - , - [HMR] App is up to date., -] -`; - -exports[`hot and live reload > should work and refresh content using hot module replacement when live reload enabled (sockjs) > page errors 1`] = `[]`; - exports[`hot and live reload > should work and refresh content using hot module replacement when live reload enabled (ws) > console messages 1`] = ` [ [rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled., @@ -295,17 +218,6 @@ exports[`hot and live reload > should work and refresh content using live reload exports[`hot and live reload > should work and refresh content using live reload (default) > page errors 1`] = `[]`; -exports[`hot and live reload > should work and refresh content using live reload when live reload disabled and hot enabled (sockjs) > console messages 1`] = ` -[ - [rspack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled., - [rspack-dev-server] App updated. Recompiling..., - [rspack-dev-server] App updated. Reloading..., - [rspack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled., -] -`; - -exports[`hot and live reload > should work and refresh content using live reload when live reload disabled and hot enabled (sockjs) > page errors 1`] = `[]`; - exports[`hot and live reload > should work and refresh content using live reload when live reload enabled and hot disabled (ws) > console messages 1`] = ` [ [rspack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled., diff --git a/tests/e2e/__snapshots__/ipc.test.js.snap b/tests/e2e/__snapshots__/ipc.test.js.snap index 061e165..c564be7 100644 --- a/tests/e2e/__snapshots__/ipc.test.js.snap +++ b/tests/e2e/__snapshots__/ipc.test.js.snap @@ -1,15 +1,5 @@ // Rstest Snapshot v1 -exports[`web socket server URL > should work with the "ipc" option using "string" value ("sockjs") > console messages 1`] = ` -[ - "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", - "[HMR] Waiting for update signal from WDS...", - "Hey.", -] -`; - -exports[`web socket server URL > should work with the "ipc" option using "string" value ("sockjs") > page errors 1`] = `[]`; - exports[`web socket server URL > should work with the "ipc" option using "string" value ("ws") > console messages 1`] = ` [ "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", @@ -20,16 +10,6 @@ exports[`web socket server URL > should work with the "ipc" option using "string exports[`web socket server URL > should work with the "ipc" option using "string" value ("ws") > page errors 1`] = `[]`; -exports[`web socket server URL > should work with the "ipc" option using "true" value ("sockjs") > console messages 1`] = ` -[ - "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", - "[HMR] Waiting for update signal from WDS...", - "Hey.", -] -`; - -exports[`web socket server URL > should work with the "ipc" option using "true" value ("sockjs") > page errors 1`] = `[]`; - exports[`web socket server URL > should work with the "ipc" option using "true" value ("ws") > console messages 1`] = ` [ "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", diff --git a/tests/e2e/__snapshots__/logging.test.js.snap b/tests/e2e/__snapshots__/logging.test.js.snap index 516415d..08bf2aa 100644 --- a/tests/e2e/__snapshots__/logging.test.js.snap +++ b/tests/e2e/__snapshots__/logging.test.js.snap @@ -1,12 +1,5 @@ // Rstest Snapshot v1 -exports[`logging > should work and do not log messages about hot and live reloading is enabled (sockjs) 1`] = ` -[ - [rspack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading disabled, Progress disabled, Overlay enabled., - Hey., -] -`; - exports[`logging > should work and do not log messages about hot and live reloading is enabled (ws) 1`] = ` [ [rspack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading disabled, Progress disabled, Overlay enabled., @@ -14,18 +7,6 @@ exports[`logging > should work and do not log messages about hot and live reload ] `; -exports[`logging > should work and log errors by default (sockjs) 1`] = ` -[ - [rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled., - [HMR] Waiting for update signal from WDS..., - Hey., - [rspack-dev-server] Errors while compiling. Reload prevented., - [rspack-dev-server] ERROR - × Error from compilation -, -] -`; - exports[`logging > should work and log errors by default (ws) 1`] = ` [ [rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled., @@ -38,13 +19,6 @@ exports[`logging > should work and log errors by default (ws) 1`] = ` ] `; -exports[`logging > should work and log message about live reloading is enabled (sockjs) 1`] = ` -[ - [rspack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled., - Hey., -] -`; - exports[`logging > should work and log message about live reloading is enabled (ws) 1`] = ` [ [rspack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled., @@ -52,30 +26,6 @@ exports[`logging > should work and log message about live reloading is enabled ( ] `; -exports[`logging > should work and log messages about hot and live reloading is enabled (sockjs) 1`] = ` -[ - [rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled., - [HMR] Waiting for update signal from WDS..., - Hey., -] -`; - -exports[`logging > should work and log messages about hot and live reloading is enabled (sockjs) 2`] = ` -[ - [rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled., - [HMR] Waiting for update signal from WDS..., - Hey., -] -`; - -exports[`logging > should work and log messages about hot and live reloading is enabled (sockjs) 3`] = ` -[ - [rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled., - [HMR] Waiting for update signal from WDS..., - Hey., -] -`; - exports[`logging > should work and log messages about hot and live reloading is enabled (ws) 1`] = ` [ [rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled., @@ -100,14 +50,6 @@ exports[`logging > should work and log messages about hot and live reloading is ] `; -exports[`logging > should work and log messages about hot is enabled (sockjs) 1`] = ` -[ - [rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading disabled, Progress disabled, Overlay enabled., - [HMR] Waiting for update signal from WDS..., - Hey., -] -`; - exports[`logging > should work and log messages about hot is enabled (ws) 1`] = ` [ [rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading disabled, Progress disabled, Overlay enabled., @@ -116,16 +58,6 @@ exports[`logging > should work and log messages about hot is enabled (ws) 1`] = ] `; -exports[`logging > should work and log only error (sockjs) 1`] = ` -[ - Hey., - [rspack-dev-server] Errors while compiling. Reload prevented., - [rspack-dev-server] ERROR - × Error from compilation -, -] -`; - exports[`logging > should work and log only error (ws) 1`] = ` [ Hey., @@ -136,18 +68,6 @@ exports[`logging > should work and log only error (ws) 1`] = ` ] `; -exports[`logging > should work and log static changes (sockjs) 1`] = ` -[ - [rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled., - [HMR] Waiting for update signal from WDS..., - Hey., - [rspack-dev-server] "/tests/fixtures/client-config/static/foo.txt" from static directory was changed. Reloading..., - [rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled., - [HMR] Waiting for update signal from WDS..., - Hey., -] -`; - exports[`logging > should work and log static changes (ws) 1`] = ` [ [rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled., @@ -160,20 +80,6 @@ exports[`logging > should work and log static changes (ws) 1`] = ` ] `; -exports[`logging > should work and log warning and errors (sockjs) 1`] = ` -[ - Hey., - [rspack-dev-server] Warnings while compiling., - [rspack-dev-server] WARNING - ⚠ Warning from compilation -, - [rspack-dev-server] Errors while compiling. Reload prevented., - [rspack-dev-server] ERROR - × Error from compilation -, -] -`; - exports[`logging > should work and log warning and errors (ws) 1`] = ` [ Hey., @@ -188,18 +94,6 @@ exports[`logging > should work and log warning and errors (ws) 1`] = ` ] `; -exports[`logging > should work and log warnings by default (sockjs) 1`] = ` -[ - [rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled., - [HMR] Waiting for update signal from WDS..., - Hey., - [rspack-dev-server] Warnings while compiling., - [rspack-dev-server] WARNING - ⚠ Warning from compilation -, -] -`; - exports[`logging > should work and log warnings by default (ws) 1`] = ` [ [rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled., @@ -212,14 +106,6 @@ exports[`logging > should work and log warnings by default (ws) 1`] = ` ] `; -exports[`logging > should work when the "client.logging" is "info" (sockjs) 1`] = ` -[ - [rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled., - [HMR] Waiting for update signal from WDS..., - Hey., -] -`; - exports[`logging > should work when the "client.logging" is "info" (ws) 1`] = ` [ [rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled., @@ -228,14 +114,6 @@ exports[`logging > should work when the "client.logging" is "info" (ws) 1`] = ` ] `; -exports[`logging > should work when the "client.logging" is "log" (sockjs) 1`] = ` -[ - [rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled., - [HMR] Waiting for update signal from WDS..., - Hey., -] -`; - exports[`logging > should work when the "client.logging" is "log" (ws) 1`] = ` [ [rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled., @@ -244,26 +122,12 @@ exports[`logging > should work when the "client.logging" is "log" (ws) 1`] = ` ] `; -exports[`logging > should work when the "client.logging" is "none" (sockjs) 1`] = ` -[ - Hey., -] -`; - exports[`logging > should work when the "client.logging" is "none" (ws) 1`] = ` [ Hey., ] `; -exports[`logging > should work when the "client.logging" is "verbose" (sockjs) 1`] = ` -[ - [rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled., - [HMR] Waiting for update signal from WDS..., - Hey., -] -`; - exports[`logging > should work when the "client.logging" is "verbose" (ws) 1`] = ` [ [rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled., diff --git a/tests/e2e/__snapshots__/port.test.js.snap b/tests/e2e/__snapshots__/port.test.js.snap index 9b69bd0..91e105c 100644 --- a/tests/e2e/__snapshots__/port.test.js.snap +++ b/tests/e2e/__snapshots__/port.test.js.snap @@ -20,7 +20,7 @@ exports[`port > should work using "0" port > console messages 1`] = ` exports[`port > should work using "0" port > page errors 1`] = `[]`; -exports[`port > should work using "8159" port > console messages 1`] = ` +exports[`port > should work using "8157" port > console messages 1`] = ` [ "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -28,7 +28,7 @@ exports[`port > should work using "8159" port > console messages 1`] = ` ] `; -exports[`port > should work using "8159" port > console messages 2`] = ` +exports[`port > should work using "8157" port > console messages 2`] = ` [ "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -36,9 +36,9 @@ exports[`port > should work using "8159" port > console messages 2`] = ` ] `; -exports[`port > should work using "8159" port > page errors 1`] = `[]`; +exports[`port > should work using "8157" port > page errors 1`] = `[]`; -exports[`port > should work using "8159" port > page errors 2`] = `[]`; +exports[`port > should work using "8157" port > page errors 2`] = `[]`; exports[`port > should work using "auto" port > console messages 1`] = ` [ diff --git a/tests/e2e/__snapshots__/server-and-client-transport.test.js.snap b/tests/e2e/__snapshots__/server-and-client-transport.test.js.snap index 4c82582..aac34b0 100644 --- a/tests/e2e/__snapshots__/server-and-client-transport.test.js.snap +++ b/tests/e2e/__snapshots__/server-and-client-transport.test.js.snap @@ -1,33 +1,10 @@ // Rstest Snapshot v1 -exports[`server and client transport > should throw an error on invalid path to client transport 1`] = `[Error: client.webSocketTransport must be a string denoting a default implementation (e.g. 'sockjs', 'ws') or a full path to a JS file via require.resolve(...) which exports a class ]`; +exports[`server and client transport > should throw an error on invalid path to client transport 1`] = `[Error: client.webSocketTransport must be a string denoting a default implementation (e.g. 'ws') or a full path to a JS file via require.resolve(...) which exports a class ]`; -exports[`server and client transport > should throw an error on invalid path to server transport 1`] = `[Error: webSocketServer (webSocketServer.type) must be a string denoting a default implementation (e.g. 'ws', 'sockjs'), a full path to a JS file which exports a class extending BaseServer (webpack-dev-server/lib/servers/BaseServer.js) via require.resolve(...), or the class itself which extends BaseServer]`; +exports[`server and client transport > should throw an error on invalid path to server transport 1`] = `[Error: webSocketServer (webSocketServer.type) must be a string denoting a default implementation (e.g. 'ws'), a full path to a JS file which exports a class extending BaseServer (webpack-dev-server/lib/servers/BaseServer.js) via require.resolve(...), or the class itself which extends BaseServer]`; -exports[`server and client transport > should throw an error on wrong path 1`] = `"webSocketServer (webSocketServer.type) must be a string denoting a default implementation (e.g. 'ws', 'sockjs'), a full path to a JS file which exports a class extending BaseServer (webpack-dev-server/lib/servers/BaseServer.js) via require.resolve(...), or the class itself which extends BaseServer"`; - -exports[`server and client transport > should use "sockjs" transport and "sockjs" web socket server 1`] = ` -[ - "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", - "[HMR] Waiting for update signal from WDS...", -] -`; - -exports[`server and client transport > should use "sockjs" transport, when web socket server is not specify 1`] = `[]`; - -exports[`server and client transport > should use "sockjs" web socket server when specify "sockjs" value 1`] = ` -[ - "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", - "[HMR] Waiting for update signal from WDS...", -] -`; - -exports[`server and client transport > should use "sockjs" web socket server when specify "sockjs" value using object 1`] = ` -[ - "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", - "[HMR] Waiting for update signal from WDS...", -] -`; +exports[`server and client transport > should throw an error on wrong path 1`] = `"webSocketServer (webSocketServer.type) must be a string denoting a default implementation (e.g. 'ws'), a full path to a JS file which exports a class extending BaseServer (webpack-dev-server/lib/servers/BaseServer.js) via require.resolve(...), or the class itself which extends BaseServer"`; exports[`server and client transport > should use "ws" transport and "ws" web socket server 1`] = ` [ @@ -57,20 +34,6 @@ exports[`server and client transport > should use "ws" web socket server when sp ] `; -exports[`server and client transport > should use custom transport and "sockjs" web socket server 1`] = ` -[ - "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", - "[HMR] Waiting for update signal from WDS...", - "open", - "hot", - "liveReload", - "reconnect", - "overlay", - "hash", - "ok", -] -`; - exports[`server and client transport > should use custom web socket server when specify class 1`] = ` [ "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", diff --git a/tests/e2e/__snapshots__/web-socket-communication.test.js.snap b/tests/e2e/__snapshots__/web-socket-communication.test.js.snap index 55ef3fd..aa72da4 100644 --- a/tests/e2e/__snapshots__/web-socket-communication.test.js.snap +++ b/tests/e2e/__snapshots__/web-socket-communication.test.js.snap @@ -1,17 +1,5 @@ // Rstest Snapshot v1 -exports[`web socket communication > should work and close web socket client connection when web socket server closed ("sockjs") > console messages 1`] = ` -[ - "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", - "[HMR] Waiting for update signal from WDS...", - "Hey.", - "[rspack-dev-server] Disconnected!", - "[rspack-dev-server] Trying to reconnect...", -] -`; - -exports[`web socket communication > should work and close web socket client connection when web socket server closed ("sockjs") > page errors 1`] = `[]`; - exports[`web socket communication > should work and close web socket client connection when web socket server closed ("ws") > console messages 1`] = ` [ "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", @@ -24,24 +12,6 @@ exports[`web socket communication > should work and close web socket client conn exports[`web socket communication > should work and close web socket client connection when web socket server closed ("ws") > page errors 1`] = `[]`; -exports[`web socket communication > should work and reconnect when the connection is lost ("sockjs") > console messages 1`] = ` -[ - "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", - "[HMR] Waiting for update signal from WDS...", - "Hey.", - "[rspack-dev-server] Disconnected!", - "[rspack-dev-server] Trying to reconnect...", - "[rspack-dev-server] App hot update...", - "[HMR] Checking for updates on the server...", - "Failed to load resource: the server responded with a status of 404 (Not Found)", - "[HMR] Cannot find update. Need to do a full reload!", - "[HMR] (Probably because of restarting the webpack-dev-server)", - "Failed to load resource: the server responded with a status of 404 (Not Found)", -] -`; - -exports[`web socket communication > should work and reconnect when the connection is lost ("sockjs") > page errors 1`] = `[]`; - exports[`web socket communication > should work and reconnect when the connection is lost ("ws") > console messages 1`] = ` [ "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", @@ -60,16 +30,6 @@ exports[`web socket communication > should work and reconnect when the connectio exports[`web socket communication > should work and reconnect when the connection is lost ("ws") > page errors 1`] = `[]`; -exports[`web socket communication > should work and terminate client that is not alive ("sockjs") > console messages 1`] = ` -[ - "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", - "[HMR] Waiting for update signal from WDS...", - "Hey.", -] -`; - -exports[`web socket communication > should work and terminate client that is not alive ("sockjs") > page errors 1`] = `[]`; - exports[`web socket communication > should work and terminate client that is not alive ("ws") > console messages 1`] = ` [ "[rspack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", diff --git a/tests/e2e/allowed-hosts.test.js b/tests/e2e/allowed-hosts.test.js index 8c70c9f..f830a55 100644 --- a/tests/e2e/allowed-hosts.test.js +++ b/tests/e2e/allowed-hosts.test.js @@ -6,7 +6,7 @@ const config = require('../fixtures/client-config/webpack.config'); const runBrowser = require('../helpers/run-browser'); const [port1, port2] = require('../helpers/ports-map')['allowed-hosts']; -const webSocketServers = ['ws', 'sockjs']; +const webSocketServers = ['ws']; describe('allowed hosts', () => { for (const webSocketServer of webSocketServers) { diff --git a/tests/e2e/api.test.js b/tests/e2e/api.test.js index 0f2dd53..cfb95cc 100644 --- a/tests/e2e/api.test.js +++ b/tests/e2e/api.test.js @@ -681,7 +681,7 @@ describe('API', () => { }); const webSocketRequests = []; - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -693,7 +693,7 @@ describe('API', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); try { const response = await page.goto(`http://localhost:${port}/`, { diff --git a/tests/e2e/built-in-routes.test.js b/tests/e2e/built-in-routes.test.js index 74df6bc..c57601c 100644 --- a/tests/e2e/built-in-routes.test.js +++ b/tests/e2e/built-in-routes.test.js @@ -31,69 +31,6 @@ describe('Built in routes', () => { await server.stop(); }); - it('should handles GET request to sockjs bundle', async () => { - page - .on('console', (message) => { - consoleMessages.push(message); - }) - .on('pageerror', (error) => { - pageErrors.push(error); - }); - - const response = await page.goto( - `http://127.0.0.1:${port}/__rspack_dev_server__/sockjs.bundle.js`, - { - waitUntil: 'networkidle0', - }, - ); - - expect(response.headers()['content-type']).toMatchSnapshot( - 'response headers content-type', - ); - - expect(response.status()).toMatchSnapshot('response status'); - - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - 'console messages', - ); - - expect(pageErrors).toMatchSnapshot('page errors'); - }); - - it('should handles HEAD request to sockjs bundle', async () => { - page - .on('console', (message) => { - consoleMessages.push(message); - }) - .on('pageerror', (error) => { - pageErrors.push(error); - }) - .on('request', (interceptedRequest) => { - if (interceptedRequest.isInterceptResolutionHandled()) return; - - interceptedRequest.continue({ method: 'HEAD' }, 10); - }); - - const response = await page.goto( - `http://127.0.0.1:${port}/__rspack_dev_server__/sockjs.bundle.js`, - { - waitUntil: 'networkidle0', - }, - ); - - expect(response.headers()['content-type']).toMatchSnapshot( - 'response headers content-type', - ); - - expect(response.status()).toMatchSnapshot('response status'); - - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - 'console messages', - ); - - expect(pageErrors).toMatchSnapshot('page errors'); - }); - it('should handle GET request to invalidate endpoint', async () => { page .on('console', (message) => { diff --git a/tests/e2e/client.test.js b/tests/e2e/client.test.js index 5195f45..71dba48 100644 --- a/tests/e2e/client.test.js +++ b/tests/e2e/client.test.js @@ -5,135 +5,6 @@ const runBrowser = require('../helpers/run-browser'); const port = require('../helpers/ports-map')['client-option']; describe('client option', () => { - describe('default behaviour', () => { - let compiler; - let server; - let page; - let browser; - let pageErrors; - let consoleMessages; - - beforeEach(async () => { - compiler = rspack(config); - - server = new Server( - { - client: { - webSocketTransport: 'sockjs', - }, - webSocketServer: 'sockjs', - port, - }, - compiler, - ); - - await server.start(); - - ({ page, browser } = await runBrowser()); - - pageErrors = []; - consoleMessages = []; - }); - - afterEach(async () => { - await browser.close(); - await server.stop(); - }); - - it('responds with a 200 status code for /ws path', async () => { - page - .on('console', (message) => { - consoleMessages.push(message); - }) - .on('pageerror', (error) => { - pageErrors.push(error); - }); - - const response = await page.goto(`http://127.0.0.1:${port}/ws`, { - waitUntil: 'networkidle0', - }); - - // overlay should be true by default - expect(server.options.client.overlay).toBe(true); - - expect(response.status()).toMatchSnapshot('response status'); - - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - 'console messages', - ); - - expect(pageErrors).toMatchSnapshot('page errors'); - }); - }); - - describe('should respect path option', () => { - let compiler; - let server; - let page; - let browser; - let pageErrors; - let consoleMessages; - - beforeEach(async () => { - compiler = rspack(config); - - server = new Server( - { - client: { - webSocketTransport: 'sockjs', - }, - webSocketServer: { - type: 'sockjs', - options: { - host: 'localhost', - port, - path: '/foo/test/bar', - }, - }, - port, - }, - compiler, - ); - - await server.start(); - - ({ page, browser } = await runBrowser()); - - pageErrors = []; - consoleMessages = []; - }); - - afterEach(async () => { - await browser.close(); - await server.stop(); - }); - - it('responds with a 200 status code for /foo/test/bar path', async () => { - page - .on('console', (message) => { - consoleMessages.push(message); - }) - .on('pageerror', (error) => { - pageErrors.push(error); - }); - - const response = await page.goto( - `http://127.0.0.1:${port}/foo/test/bar`, - { - waitUntil: 'networkidle0', - }, - ); - - expect(response.status()).toMatchSnapshot('response status'); - - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - 'console messages', - ); - - expect(pageErrors).toMatchSnapshot('page errors'); - }); - }); - describe('configure client entry', () => { let compiler; let server; @@ -304,14 +175,6 @@ describe('client option', () => { describe('webSocketTransport', () => { const clientModes = [ - { - title: 'as a string ("sockjs")', - client: { - webSocketTransport: 'sockjs', - }, - webSocketServer: 'sockjs', - shouldThrow: false, - }, { title: 'as a string ("ws")', client: { @@ -320,15 +183,6 @@ describe('client option', () => { webSocketServer: 'ws', shouldThrow: false, }, - { - title: 'as a path ("sockjs")', - client: { - webSocketTransport: - require.resolve('@rspack/dev-server/client/clients/SockJSClient'), - }, - webSocketServer: 'sockjs', - shouldThrow: false, - }, { title: 'as a path ("ws")', client: { @@ -338,14 +192,6 @@ describe('client option', () => { webSocketServer: 'ws', shouldThrow: false, }, - { - title: 'as a nonexistent path (sockjs)', - client: { - webSocketTransport: '/bad/path/to/implementation', - }, - webSocketServer: 'sockjs', - shouldThrow: true, - }, { title: 'as a nonexistent path (ws)', client: { diff --git a/tests/e2e/hot-and-live-reload.test.js b/tests/e2e/hot-and-live-reload.test.js index d30b932..28bcb0d 100644 --- a/tests/e2e/hot-and-live-reload.test.js +++ b/tests/e2e/hot-and-live-reload.test.js @@ -1,6 +1,5 @@ const path = require('node:path'); const WebSocket = require('ws'); -const SockJS = require('sockjs-client'); const { rspack } = require('@rspack/core'); const fs = require('node:fs'); const { RspackDevServer: Server } = require('@rspack/dev-server'); @@ -20,7 +19,6 @@ const cssFilePath = path.resolve( const INVALID_MESSAGE = '[rspack-dev-server] App updated. Recompiling...'; describe('hot and live reload', () => { - // "sockjs" client cannot add additional headers const modes = [ { title: 'should work and refresh content using hot module replacement', @@ -128,70 +126,6 @@ describe('hot and live reload', () => { hot: true, }, }, - // "sockjs" web socket serve - { - title: - 'should work and refresh content using hot module replacement when hot enabled', - options: { - allowedHosts: 'all', - - webSocketServer: 'sockjs', - hot: true, - }, - }, - { - title: - 'should work and refresh content using hot module replacement when live reload enabled', - options: { - allowedHosts: 'all', - - webSocketServer: 'sockjs', - liveReload: true, - }, - }, - { - title: 'should not refresh content when hot and no live reload disabled', - options: { - allowedHosts: 'all', - - webSocketServer: 'sockjs', - hot: false, - liveReload: false, - }, - }, - { - title: - 'should work and refresh content using hot module replacement when live reload disabled and hot enabled', - options: { - allowedHosts: 'all', - - webSocketServer: 'sockjs', - liveReload: false, - hot: true, - }, - }, - { - title: - 'should work and refresh content using live reload when live reload disabled and hot enabled', - options: { - allowedHosts: 'all', - - webSocketServer: 'sockjs', - liveReload: true, - hot: false, - }, - }, - { - title: - 'should work and refresh content using hot module replacement when live reload and hot enabled', - options: { - allowedHosts: 'all', - - webSocketServer: 'sockjs', - liveReload: true, - hot: true, - }, - }, { title: 'should work and allow to disable hot module replacement using the "rspack-dev-server-hot=false"', @@ -345,87 +279,54 @@ describe('hot and live reload', () => { ? testDevServerOptions.webSocketServer : 'ws'; - if (webSocketTransport === 'ws') { - const ws = new WebSocket( - `ws://127.0.0.1:${devServerOptions.port}/ws`, - { - headers: { - host: `127.0.0.1:${devServerOptions.port}`, - origin: `http://127.0.0.1:${devServerOptions.port}`, - }, - }, + if (webSocketTransport !== 'ws') { + throw new Error( + `Unsupported webSocketTransport in test: ${webSocketTransport}`, ); + } - let opened = false; - let received = false; - let errored = false; - - ws.on('error', (error) => { - if (!webSocketServerLaunched && /404/.test(error)) { - errored = true; - } else { - errored = true; - } - - ws.close(); - }); - - ws.on('open', () => { - opened = true; - }); - - ws.on('message', (data) => { - const message = JSON.parse(data.toString()); - - if (message.type === 'ok') { - received = true; - - ws.close(); - } - }); - - ws.on('close', () => { - if (opened && received && !errored) { - resolve(); - } else if (!webSocketServerLaunched && errored) { - resolve(); - } - }); - } else { - const sockjs = new SockJS( - `http://127.0.0.1:${devServerOptions.port}/ws`, - ); + const ws = new WebSocket(`ws://127.0.0.1:${devServerOptions.port}/ws`, { + headers: { + host: `127.0.0.1:${devServerOptions.port}`, + origin: `http://127.0.0.1:${devServerOptions.port}`, + }, + }); - let opened = false; - let received = false; - let errored = false; + let opened = false; + let received = false; + let errored = false; - sockjs.onerror = () => { + ws.on('error', (error) => { + if (!webSocketServerLaunched && /404/.test(error)) { errored = true; - }; + } else { + errored = true; + } - sockjs.onopen = () => { - opened = true; - }; + ws.close(); + }); - sockjs.onmessage = ({ data }) => { - const message = JSON.parse(data.toString()); + ws.on('open', () => { + opened = true; + }); - if (message.type === 'ok') { - received = true; + ws.on('message', (data) => { + const message = JSON.parse(data.toString()); - sockjs.close(); - } - }; + if (message.type === 'ok') { + received = true; - sockjs.onclose = (event) => { - if (opened && received && !errored) { - resolve(); - } else if (event && event.reason === 'Cannot connect to server') { - resolve(); - } - }; - } + ws.close(); + } + }); + + ws.on('close', () => { + if (opened && received && !errored) { + resolve(); + } else if (!webSocketServerLaunched && errored) { + resolve(); + } + }); }); const launched = await runBrowser(); diff --git a/tests/e2e/ipc.test.js b/tests/e2e/ipc.test.js index 9a9b100..0fa56f4 100644 --- a/tests/e2e/ipc.test.js +++ b/tests/e2e/ipc.test.js @@ -10,7 +10,7 @@ const runBrowser = require('../helpers/run-browser'); const sessionSubscribe = require('../helpers/session-subscribe'); const port1 = require('../helpers/ports-map').ipc; -const webSocketServers = ['ws', 'sockjs']; +const webSocketServers = ['ws']; describe('web socket server URL', () => { for (const webSocketServer of webSocketServers) { @@ -71,7 +71,7 @@ describe('web socket server URL', () => { const webSocketRequests = []; if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -83,7 +83,7 @@ describe('web socket server URL', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); } else { page.on('request', (request) => { if (/\/ws\//.test(request.url())) { @@ -173,7 +173,7 @@ describe('web socket server URL', () => { const webSocketRequests = []; if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -185,7 +185,7 @@ describe('web socket server URL', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); } else { page.on('request', (request) => { if (/\/ws\//.test(request.url())) { @@ -290,7 +290,7 @@ describe('web socket server URL', () => { const webSocketRequests = []; if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -302,7 +302,7 @@ describe('web socket server URL', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); } else { page.on('request', (request) => { if (/\/ws\//.test(request.url())) { diff --git a/tests/e2e/logging.test.js b/tests/e2e/logging.test.js index ef08dbd..ae37f50 100644 --- a/tests/e2e/logging.test.js +++ b/tests/e2e/logging.test.js @@ -9,10 +9,7 @@ const port = require('../helpers/ports-map').logging; require('../helpers/normalize'); describe('logging', () => { - const webSocketServers = [ - { webSocketServer: 'ws' }, - { webSocketServer: 'sockjs' }, - ]; + const webSocketServers = [{ webSocketServer: 'ws' }]; const cases = [ { diff --git a/tests/e2e/server-and-client-transport.test.js b/tests/e2e/server-and-client-transport.test.js index 699c2bc..ae87d54 100644 --- a/tests/e2e/server-and-client-transport.test.js +++ b/tests/e2e/server-and-client-transport.test.js @@ -2,9 +2,7 @@ const { rspack } = require('@rspack/core'); const { RspackDevServer: Server } = require('@rspack/dev-server'); const WebsocketServer = require('../../dist/servers/WebsocketServer').default; const defaultConfig = require('../fixtures/provide-plugin-default/webpack.config'); -const sockjsConfig = require('../fixtures/provide-plugin-sockjs-config/webpack.config'); const wsConfig = require('../fixtures/provide-plugin-ws-config/webpack.config'); -const customConfig = require('../fixtures/provide-plugin-custom/webpack.config'); const runBrowser = require('../helpers/run-browser'); const port = require('../helpers/ports-map')['server-and-client-transport']; @@ -121,82 +119,6 @@ describe('server and client transport', () => { } }); - it('should use "sockjs" web socket server when specify "sockjs" value', async () => { - const compiler = rspack(sockjsConfig); - const devServerOptions = { - port, - webSocketServer: 'sockjs', - }; - const server = new Server(devServerOptions, compiler); - - await server.start(); - - const { page, browser } = await runBrowser(); - - try { - const consoleMessages = []; - - page.on('console', (message) => { - consoleMessages.push(message); - }); - - await page.goto(`http://localhost:${port}/`, { - waitUntil: 'networkidle0', - }); - - const isCorrectTransport = await page.evaluate( - () => window.injectedClient === window.expectedClient, - ); - - expect(isCorrectTransport).toBe(true); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot(); - } finally { - await browser.close(); - await server.stop(); - } - }); - - it('should use "sockjs" web socket server when specify "sockjs" value using object', async () => { - const compiler = rspack(sockjsConfig); - const devServerOptions = { - port, - webSocketServer: { - type: 'sockjs', - }, - }; - const server = new Server(devServerOptions, compiler); - - await server.start(); - - const { page, browser } = await runBrowser(); - - try { - const consoleMessages = []; - - page.on('console', (message) => { - consoleMessages.push(message); - }); - - await page.goto(`http://localhost:${port}/`, { - waitUntil: 'networkidle0', - }); - - const isCorrectTransport = await page.evaluate( - () => window.injectedClient === window.expectedClient, - ); - - expect(isCorrectTransport).toBe(true); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot(); - } finally { - await browser.close(); - await server.stop(); - } - }); - it('should use custom web socket server when specify class', async () => { const compiler = rspack(defaultConfig); const devServerOptions = { @@ -382,45 +304,6 @@ describe('server and client transport', () => { } }); - it('should use "sockjs" transport, when web socket server is not specify', async () => { - const compiler = rspack(sockjsConfig); - const devServerOptions = { - port, - client: { - webSocketTransport: 'sockjs', - }, - }; - const server = new Server(devServerOptions, compiler); - - await server.start(); - - const { page, browser } = await runBrowser(); - - try { - const consoleMessages = []; - - page.on('console', (message) => { - consoleMessages.push(message); - }); - - await page.goto(`http://localhost:${port}/main.js`, { - waitUntil: 'networkidle0', - }); - - const isCorrectTransport = await page.evaluate( - () => window.injectedClient === window.expectedClient, - ); - - expect(isCorrectTransport).toBe(true); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot(); - } finally { - await browser.close(); - await server.stop(); - } - }); - it('should use "ws" transport, when web socket server is not specify', async () => { const compiler = rspack(wsConfig); const devServerOptions = { @@ -460,14 +343,14 @@ describe('server and client transport', () => { } }); - it('should use "sockjs" transport and "sockjs" web socket server', async () => { - const compiler = rspack(sockjsConfig); + it('should use "ws" transport and "ws" web socket server', async () => { + const compiler = rspack(wsConfig); const devServerOptions = { port, client: { - webSocketTransport: 'sockjs', + webSocketTransport: 'ws', }, - webSocketServer: 'sockjs', + webSocketServer: 'ws', }; const server = new Server(devServerOptions, compiler); @@ -500,93 +383,43 @@ describe('server and client transport', () => { } }); - it('should use "ws" transport and "ws" web socket server', async () => { - const compiler = rspack(wsConfig); + it('should throw an error on invalid path to server transport', async () => { + const compiler = rspack(defaultConfig); const devServerOptions = { port, - client: { - webSocketTransport: 'ws', + webSocketServer: { + type: 'invalid/path', }, - webSocketServer: 'ws', }; const server = new Server(devServerOptions, compiler); + await expect(async () => { + await server.start(); + }).rejects.toThrowErrorMatchingSnapshot(); - await server.start(); - - const { page, browser } = await runBrowser(); - - try { - const consoleMessages = []; - - page.on('console', (message) => { - consoleMessages.push(message); - }); - - await page.goto(`http://localhost:${port}/`, { - waitUntil: 'networkidle0', - }); - - const isCorrectTransport = await page.evaluate( - () => window.injectedClient === window.expectedClient, - ); - - expect(isCorrectTransport).toBe(true); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot(); - } finally { - await browser.close(); - await server.stop(); - } + await server.stop(); }); - it('should use custom transport and "sockjs" web socket server', async () => { - const compiler = rspack(customConfig); + it('should throw an explicit error when using removed "sockjs" server transport', async () => { + const compiler = rspack(defaultConfig); const devServerOptions = { port, - client: { - webSocketTransport: - require.resolve('../fixtures/custom-client/CustomSockJSClient'), - }, webSocketServer: 'sockjs', }; const server = new Server(devServerOptions, compiler); - await server.start(); - - const { page, browser } = await runBrowser(); - - try { - const consoleMessages = []; - - page.on('console', (message) => { - consoleMessages.push(message); - }); - - await page.goto(`http://localhost:${port}/`, { - waitUntil: 'networkidle0', - }); - - const isCorrectTransport = await page.evaluate( - () => window.injectedClient === window.expectedClient, - ); + await expect(async () => { + await server.start(); + }).rejects.toThrowError(/SockJS support has been removed/); - expect(isCorrectTransport).toBe(true); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot(); - } finally { - await browser.close(); - await server.stop(); - } + await server.stop(); }); - it('should throw an error on invalid path to server transport', async () => { + it('should throw an error on invalid path to client transport', async () => { const compiler = rspack(defaultConfig); const devServerOptions = { port, - webSocketServer: { - type: 'invalid/path', + client: { + webSocketTransport: 'invalid/path', }, }; const server = new Server(devServerOptions, compiler); @@ -597,18 +430,19 @@ describe('server and client transport', () => { await server.stop(); }); - it('should throw an error on invalid path to client transport', async () => { + it('should throw an explicit error when using removed "sockjs" client transport', async () => { const compiler = rspack(defaultConfig); const devServerOptions = { port, client: { - webSocketTransport: 'invalid/path', + webSocketTransport: 'sockjs', }, }; const server = new Server(devServerOptions, compiler); + await expect(async () => { await server.start(); - }).rejects.toThrowErrorMatchingSnapshot(); + }).rejects.toThrowError(/SockJS support has been removed/); await server.stop(); }); diff --git a/tests/e2e/web-socket-communication.test.js b/tests/e2e/web-socket-communication.test.js index 3b8a0d0..e10a2c0 100644 --- a/tests/e2e/web-socket-communication.test.js +++ b/tests/e2e/web-socket-communication.test.js @@ -9,7 +9,7 @@ const port = require('../helpers/ports-map')['web-socket-communication']; rs.setConfig({ testTimeout: 60_000 }); describe('web socket communication', () => { - const webSocketServers = ['ws', 'sockjs']; + const webSocketServers = ['ws']; for (const websocketServer of webSocketServers) { it(`should work and close web socket client connection when web socket server closed ("${websocketServer}")`, async () => { diff --git a/tests/e2e/web-socket-server-url.test.js b/tests/e2e/web-socket-server-url.test.js index 14a17f0..f1c4087 100644 --- a/tests/e2e/web-socket-server-url.test.js +++ b/tests/e2e/web-socket-server-url.test.js @@ -7,7 +7,7 @@ const runBrowser = require('../helpers/run-browser'); const sessionSubscribe = require('../helpers/session-subscribe'); const [port1, port2] = require('../helpers/ports-map')['web-socket-server-url']; -const webSocketServers = ['ws', 'sockjs']; +const webSocketServers = ['ws']; describe('web socket server URL', () => { for (const webSocketServer of webSocketServers) { @@ -68,7 +68,7 @@ describe('web socket server URL', () => { const webSocketRequests = []; if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -80,7 +80,7 @@ describe('web socket server URL', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); } else { page.on('request', (request) => { if (/\/ws\//.test(request.url())) { @@ -163,7 +163,7 @@ describe('web socket server URL', () => { const webSocketRequests = []; if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -175,7 +175,7 @@ describe('web socket server URL', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); } else { page.on('request', (request) => { if (/\/ws\//.test(request.url())) { @@ -264,7 +264,7 @@ describe('web socket server URL', () => { const webSocketRequests = []; if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -276,7 +276,7 @@ describe('web socket server URL', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); } else { page.on('request', (request) => { if (/\/ws\//.test(request.url())) { @@ -364,7 +364,7 @@ describe('web socket server URL', () => { const webSocketRequests = []; if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -376,7 +376,7 @@ describe('web socket server URL', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); } else { page.on('request', (request) => { if (/\/ws\//.test(request.url())) { @@ -442,7 +442,7 @@ describe('web socket server URL', () => { const webSocketRequests = []; if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -454,7 +454,7 @@ describe('web socket server URL', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); } else { page.on('request', (request) => { if (/\/ws\//.test(request.url())) { @@ -516,7 +516,7 @@ describe('web socket server URL', () => { const webSocketRequests = []; if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -528,7 +528,7 @@ describe('web socket server URL', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); } else { page.on('request', (request) => { if (/\/ws\//.test(request.url())) { @@ -590,7 +590,7 @@ describe('web socket server URL', () => { const webSocketRequests = []; if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -602,7 +602,7 @@ describe('web socket server URL', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); } else { page.on('request', (request) => { if (/\/ws\//.test(request.url())) { @@ -664,7 +664,7 @@ describe('web socket server URL', () => { const webSocketRequests = []; if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -676,7 +676,7 @@ describe('web socket server URL', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); } else { page.on('request', (request) => { if (/\/ws\//.test(request.url())) { @@ -738,7 +738,7 @@ describe('web socket server URL', () => { const webSocketRequests = []; if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -750,7 +750,7 @@ describe('web socket server URL', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); } else { page.on('request', (request) => { if (/\/ws\//.test(request.url())) { @@ -811,7 +811,7 @@ describe('web socket server URL', () => { const webSocketRequests = []; if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -823,7 +823,7 @@ describe('web socket server URL', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); } else { page.on('request', (request) => { if (/\/ws\//.test(request.url())) { @@ -885,7 +885,7 @@ describe('web socket server URL', () => { const webSocketRequests = []; if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -897,7 +897,7 @@ describe('web socket server URL', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); } else { page.on('request', (request) => { if (/\/ws\//.test(request.url())) { @@ -932,15 +932,14 @@ describe('web socket server URL', () => { type: webSocketServer, options: { host: '0.0.0.0', - // "sockjs" doesn't support external server - port: webSocketServer === 'sockjs' ? `${port1}` : `${port2}`, + port: `${port2}`, }, }, port: port1, host: '0.0.0.0', client: { webSocketURL: { - port: webSocketServer === 'sockjs' ? `${port1}` : `${port2}`, + port: `${port2}`, }, }, allowedHosts: 'all', @@ -966,7 +965,7 @@ describe('web socket server URL', () => { const webSocketRequests = []; if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -978,7 +977,7 @@ describe('web socket server URL', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); } else { page.on('request', (request) => { if (/\/ws\//.test(request.url())) { @@ -994,9 +993,7 @@ describe('web socket server URL', () => { const webSocketRequest = webSocketRequests[0]; expect(webSocketRequest.url).toContain( - webSocketServer === 'sockjs' - ? `${websocketURLProtocol}://127.0.0.1:${port1}/ws` - : `${websocketURLProtocol}://127.0.0.1:${port2}/ws`, + `${websocketURLProtocol}://127.0.0.1:${port2}/ws`, ); expect( consoleMessages.map((message) => message.text()), @@ -1042,7 +1039,7 @@ describe('web socket server URL', () => { const webSocketRequests = []; if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -1054,7 +1051,7 @@ describe('web socket server URL', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); } else { page.on('request', (request) => { if (/\/ws\//.test(request.url())) { @@ -1115,7 +1112,7 @@ describe('web socket server URL', () => { const webSocketRequests = []; if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -1127,7 +1124,7 @@ describe('web socket server URL', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); } else { page.on('request', (request) => { if (/\/ws\//.test(request.url())) { @@ -1184,7 +1181,7 @@ describe('web socket server URL', () => { const webSocketRequests = []; if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -1196,7 +1193,7 @@ describe('web socket server URL', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); } else { page.on('request', (request) => { if (/\/ws\//.test(request.url())) { @@ -1258,7 +1255,7 @@ describe('web socket server URL', () => { const webSocketRequests = []; if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -1270,7 +1267,7 @@ describe('web socket server URL', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); } else { page.on('request', (request) => { if (/\/ws\//.test(request.url())) { @@ -1335,7 +1332,7 @@ describe('web socket server URL', () => { const webSocketRequests = []; if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -1347,7 +1344,7 @@ describe('web socket server URL', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); } else { page.on('request', (request) => { if (/\/ws\//.test(request.url())) { @@ -1362,10 +1359,7 @@ describe('web socket server URL', () => { const webSocketRequest = webSocketRequests[0]; expect(webSocketRequest.url).toContain( - // "sockjs" has bug with parsing URL - webSocketServer === 'ws' - ? `${websocketURLProtocol}://foo:chuntaro@127.0.0.1:${port1}/ws` - : `${websocketURLProtocol}://127.0.0.1:${port1}/ws`, + `${websocketURLProtocol}://foo:chuntaro@127.0.0.1:${port1}/ws`, ); expect( consoleMessages.map((message) => message.text()), @@ -1412,7 +1406,7 @@ describe('web socket server URL', () => { const webSocketRequests = []; if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -1424,7 +1418,7 @@ describe('web socket server URL', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); } else { page.on('request', (request) => { if (/\/ws\//.test(request.url())) { @@ -1486,7 +1480,7 @@ describe('web socket server URL', () => { const webSocketRequests = []; if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -1498,7 +1492,7 @@ describe('web socket server URL', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); } else { page.on('request', (request) => { if (/\/custom-ws\/foo\/bar/.test(request.url())) { @@ -1561,7 +1555,7 @@ describe('web socket server URL', () => { const webSocketRequests = []; if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -1573,7 +1567,7 @@ describe('web socket server URL', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); } else { page.on('request', (request) => { if (/\/custom-ws\//.test(request.url())) { @@ -1642,7 +1636,7 @@ describe('web socket server URL', () => { const webSocketRequests = []; if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -1654,7 +1648,7 @@ describe('web socket server URL', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); } else { page.on('request', (request) => { if (/\/custom-ws\/foo\/bar/.test(request.url())) { @@ -1721,7 +1715,7 @@ describe('web socket server URL', () => { const webSocketRequests = []; if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -1733,7 +1727,7 @@ describe('web socket server URL', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); } else { page.on('request', (request) => { if (/\/custom-ws\//.test(request.url())) { @@ -1761,7 +1755,6 @@ describe('web socket server URL', () => { } }); - // Only works for "ws" server, "sockjs" adds "/" be default, because need do requests like "/custom-ws/info?t=1624462615772" it(`should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" ending with slash ("${webSocketServer}")`, async () => { const compiler = rspack(config); const devServerOptions = { @@ -1801,7 +1794,7 @@ describe('web socket server URL', () => { const webSocketRequests = []; if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -1813,7 +1806,7 @@ describe('web socket server URL', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); } else { page.on('request', (request) => { if (/\/custom-ws\//.test(request.url())) { @@ -1880,7 +1873,7 @@ describe('web socket server URL', () => { const webSocketRequests = []; if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -1892,7 +1885,7 @@ describe('web socket server URL', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); } else { page.on('request', (request) => { if (/\/custom-ws\//.test(request.url())) { @@ -1922,87 +1915,6 @@ describe('web socket server URL', () => { } }); - // Only works for "sockjs" server - it(`should work with the "client.webSocketURL.pathname" option and the custom web socket server "prefix" for compatibility with "sockjs" ("${webSocketServer}")`, async () => { - const compiler = rspack(config); - const devServerOptions = { - client: { - webSocketURL: { - pathname: '/custom-ws', - }, - }, - webSocketServer: { - type: webSocketServer, - options: - webSocketServer === 'ws' - ? { path: '/custom-ws' } - : { prefix: '/custom-ws' }, - }, - port: port1, - host: '0.0.0.0', - allowedHosts: 'all', - }; - const server = new Server(devServerOptions, compiler); - - await server.start(); - - const { page, browser } = await runBrowser(); - - try { - const pageErrors = []; - const consoleMessages = []; - - page - .on('console', (message) => { - consoleMessages.push(message); - }) - .on('pageerror', (error) => { - pageErrors.push(error); - }); - - const webSocketRequests = []; - - if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); - - session.on('Network.webSocketCreated', (test) => { - webSocketRequests.push(test); - }); - - await session.send('Target.setAutoAttach', { - autoAttach: true, - flatten: true, - waitForDebuggerOnStart: true, - }); - - sessionSubscribe(session); - } else { - page.on('request', (request) => { - if (/\/custom-ws/.test(request.url())) { - webSocketRequests.push({ url: request.url() }); - } - }); - } - - await page.goto(`http://127.0.0.1:${port1}/`, { - waitUntil: 'networkidle0', - }); - - const webSocketRequest = webSocketRequests[0]; - - expect(webSocketRequest.url).toContain( - `${websocketURLProtocol}://127.0.0.1:${port1}/custom-ws`, - ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot('console messages'); - expect(pageErrors).toMatchSnapshot('page errors'); - } finally { - await browser.close(); - await server.stop(); - } - }); - it(`should work when "host" option is IPv4 ("${webSocketServer}")`, async () => { const hostname = Server.internalIPSync('v4'); const compiler = rspack(config); @@ -2032,7 +1944,7 @@ describe('web socket server URL', () => { const webSocketRequests = []; if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -2044,7 +1956,7 @@ describe('web socket server URL', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); } else { page.on('request', (request) => { if (/\/ws\//.test(request.url())) { @@ -2100,7 +2012,7 @@ describe('web socket server URL', () => { const webSocketRequests = []; if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -2112,7 +2024,7 @@ describe('web socket server URL', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); } else { page.on('request', (request) => { if (/\/ws\//.test(request.url())) { @@ -2169,7 +2081,7 @@ describe('web socket server URL', () => { const webSocketRequests = []; if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -2181,7 +2093,7 @@ describe('web socket server URL', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); } else { page.on('request', (request) => { if (/\/ws\//.test(request.url())) { @@ -2237,7 +2149,7 @@ describe('web socket server URL', () => { const webSocketRequests = []; if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -2249,7 +2161,7 @@ describe('web socket server URL', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); } else { page.on('request', (request) => { if (/\/ws\//.test(request.url())) { @@ -2316,7 +2228,7 @@ describe('web socket server URL', () => { const webSocketRequests = []; if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -2328,7 +2240,7 @@ describe('web socket server URL', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); } else { page.on('request', (request) => { if (/\/ws\//.test(request.url())) { @@ -2395,7 +2307,7 @@ describe('web socket server URL', () => { const webSocketRequests = []; if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -2407,7 +2319,7 @@ describe('web socket server URL', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); } else { page.on('request', (request) => { if (/\/ws\//.test(request.url())) { @@ -2467,7 +2379,7 @@ describe('web socket server URL', () => { const webSocketRequests = []; if (webSocketServer === 'ws') { - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -2479,7 +2391,7 @@ describe('web socket server URL', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); } else { page.on('request', (request) => { if (/\/ws\//.test(request.url())) { diff --git a/tests/e2e/web-socket-server.test.js b/tests/e2e/web-socket-server.test.js index 07bc4d9..b33ce7a 100644 --- a/tests/e2e/web-socket-server.test.js +++ b/tests/e2e/web-socket-server.test.js @@ -33,7 +33,7 @@ describe('web socket server', () => { }); const webSocketRequests = []; - const session = await page.target().createCDPSession(); + const session = await page.createCDPSession(); session.on('Network.webSocketCreated', (test) => { webSocketRequests.push(test); @@ -45,7 +45,7 @@ describe('web socket server', () => { waitForDebuggerOnStart: true, }); - sessionSubscribe(session); + await sessionSubscribe(session); await page.goto(`http://127.0.0.1:${port}/`, { waitUntil: 'networkidle0', diff --git a/tests/fixtures/custom-client/CustomSockJSClient.js b/tests/fixtures/custom-client/CustomSockJSClient.js deleted file mode 100644 index 502a470..0000000 --- a/tests/fixtures/custom-client/CustomSockJSClient.js +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Copy from webpack-dev-server - */ - -'use strict'; - -const SockJS = require('sockjs-client/dist/sockjs'); - -module.exports = class SockJSClient { - constructor(url) { - this.sock = new SockJS( - url.replace(/^ws:/i, 'http://').replace(/^wss:/i, 'https://'), - ); - } - - onOpen(f) { - this.sock.onopen = () => { - console.log('open'); - f(); - }; - } - - onClose(f) { - this.sock.onclose = () => { - console.log('close'); - f(); - }; - } - - // call f with the message string as the first argument - onMessage(f) { - this.sock.onmessage = (e) => { - const obj = JSON.parse(e.data); - console.log(obj.type); - f(e.data); - }; - } -}; diff --git a/tests/fixtures/provide-plugin-custom/foo.js b/tests/fixtures/provide-plugin-custom/foo.js deleted file mode 100644 index fac66df..0000000 --- a/tests/fixtures/provide-plugin-custom/foo.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict'; - -// 'npm run prepare' must be run for this to work during testing -const CustomClient = require('../custom-client/CustomSockJSClient'); - -window.expectedClient = CustomClient; -// eslint-disable-next-line camelcase, no-undef -window.injectedClient = __webpack_dev_server_client__; diff --git a/tests/fixtures/provide-plugin-custom/webpack.config.js b/tests/fixtures/provide-plugin-custom/webpack.config.js deleted file mode 100644 index 3b34938..0000000 --- a/tests/fixtures/provide-plugin-custom/webpack.config.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -const HTMLGeneratorPlugin = require('../../helpers/html-generator-plugin'); - -/** - * @type {import('@rspack/core').RspackOptions} - */ -const config = { - mode: 'development', - context: __dirname, - stats: 'none', - entry: './foo.js', - output: { - path: '/', - }, - node: false, - infrastructureLogging: { - level: 'info', - stream: { - write: () => {}, - }, - }, - plugins: [new HTMLGeneratorPlugin()], -}; - -module.exports = config; diff --git a/tests/fixtures/provide-plugin-sockjs-config/foo.js b/tests/fixtures/provide-plugin-sockjs-config/foo.js deleted file mode 100644 index 8b4be0a..0000000 --- a/tests/fixtures/provide-plugin-sockjs-config/foo.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict'; - -// 'npm run prepare' must be run for this to work during testing -const SockJSClient = require('../../../client/clients/SockJSClient').default; - -window.expectedClient = SockJSClient; -// eslint-disable-next-line camelcase, no-undef -window.injectedClient = __webpack_dev_server_client__.default; diff --git a/tests/fixtures/provide-plugin-sockjs-config/webpack.config.js b/tests/fixtures/provide-plugin-sockjs-config/webpack.config.js deleted file mode 100644 index ebcb7e1..0000000 --- a/tests/fixtures/provide-plugin-sockjs-config/webpack.config.js +++ /dev/null @@ -1,21 +0,0 @@ -'use strict'; - -const HTMLGeneratorPlugin = require('../../helpers/html-generator-plugin'); - -module.exports = { - mode: 'development', - context: __dirname, - stats: 'none', - entry: './foo.js', - output: { - path: '/', - }, - node: false, - infrastructureLogging: { - level: 'info', - stream: { - write: () => {}, - }, - }, - plugins: [new HTMLGeneratorPlugin()], -}; diff --git a/tests/helpers/ports-map.js b/tests/helpers/ports-map.js index b398ad0..889964c 100644 --- a/tests/helpers/ports-map.js +++ b/tests/helpers/ports-map.js @@ -7,7 +7,6 @@ const listOfTests = { 'cli-port-option': 1, // e2e tests bundle: 1, - 'sockjs-client': 1, 'web-socket-client': 1, 'hot-and-live-reload': 1, logging: 1, @@ -42,7 +41,6 @@ const listOfTests = { 'stats-option': 1, 'watch-files-option': 1, 'web-socket-server-option': 1, - 'sockjs-server': 1, 'web-socket-server': 1, routes: 1, 'web-socket-communication': 1, diff --git a/tests/helpers/session-subscribe.js b/tests/helpers/session-subscribe.js index bc0c832..7377213 100644 --- a/tests/helpers/session-subscribe.js +++ b/tests/helpers/session-subscribe.js @@ -2,6 +2,6 @@ module.exports = async function sessionSubscribe(session) { session.on('sessionattached', (s) => { sessionSubscribe(s); }); - session.send('Network.enable'); - session.send('Runtime.runIfWaitingForDebugger'); + await session.send('Network.enable'); + await session.send('Runtime.runIfWaitingForDebugger'); }; diff --git a/tests/helpers/setup-test.js b/tests/helpers/setup-test.js index a419895..726bd20 100644 --- a/tests/helpers/setup-test.js +++ b/tests/helpers/setup-test.js @@ -23,10 +23,6 @@ try { // temporary fix require.resolve error in rstest, see https://github.com/web-infra-dev/rstest/issues/848 const originalResolveFilename = Module._resolveFilename; const moduleAliasMap = new Map([ - [ - '../client/clients/SockJSClient', - path.resolve(process.cwd(), 'client/clients/SockJSClient.js'), - ], [ '../client/clients/WebSocketClient', path.resolve(process.cwd(), 'client/clients/WebSocketClient.js'), diff --git a/tests/normalizeOptions.test.ts b/tests/normalizeOptions.test.ts index 0e89804..ba771aa 100644 --- a/tests/normalizeOptions.test.ts +++ b/tests/normalizeOptions.test.ts @@ -1,7 +1,6 @@ import { type RspackOptions, rspack } from '@rspack/core'; import { type Configuration, RspackDevServer } from '@rspack/dev-server'; import ReactRefreshPlugin from '@rspack/plugin-react-refresh'; -import customConfig from './fixtures/provide-plugin-custom/webpack.config'; // The aims of use a cutstom value rather than // default is to avoid stack overflow trigged @@ -99,20 +98,6 @@ describe.skip('normalize options snapshot', () => { await server.start(); await server.stop(); }); - - it('should support custom client transport', async () => { - const compiler = rspack(customConfig); - const devServerOptions = { - client: { - webSocketTransport: - require.resolve('./fixtures/custom-client/CustomSockJSClient'), - }, - webSocketServer: 'sockjs', - }; - const server = new RspackDevServer(devServerOptions, compiler); - await server.start(); - await server.stop(); - }); }); async function match(config: RspackOptions) {