|
5 | 5 | */ |
6 | 6 |
|
7 | 7 | addToLibrary({ |
| 8 | + $SOCKFS__deps: ['$FS'], |
8 | 9 | $SOCKFS__postset: () => { |
| 10 | +#if ENVIRONMENT_MAY_BE_NODE && EXPORT_ES6 |
| 11 | + // In ESM mode, pre-load 'ws' at init time since require() is not available. |
| 12 | + // This runs lazily (only when SOCKFS is used, not at module load time). |
| 13 | + addAtInit(`if (ENVIRONMENT_IS_NODE) { |
| 14 | + SOCKFS.websocketModule = (await import('ws')).default; |
| 15 | + }`); |
| 16 | +#endif |
9 | 17 | addAtInit('SOCKFS.root = FS.mount(SOCKFS, {}, null);'); |
10 | 18 | }, |
11 | | - $SOCKFS__deps: ['$FS'], |
12 | 19 | $SOCKFS: { |
13 | 20 | #if expectToReceiveOnModule('websocket') |
14 | 21 | websocketArgs: {}, |
@@ -216,7 +223,11 @@ addToLibrary({ |
216 | 223 | var WebSocketConstructor; |
217 | 224 | #if ENVIRONMENT_MAY_BE_NODE |
218 | 225 | if (ENVIRONMENT_IS_NODE) { |
| 226 | +#if EXPORT_ES6 |
| 227 | + WebSocketConstructor = /** @type{(typeof WebSocket)} */(SOCKFS.websocketModule); |
| 228 | +#else |
219 | 229 | WebSocketConstructor = /** @type{(typeof WebSocket)} */(require('ws')); |
| 230 | +#endif |
220 | 231 | } else |
221 | 232 | #endif // ENVIRONMENT_MAY_BE_NODE |
222 | 233 | { |
@@ -522,7 +533,11 @@ addToLibrary({ |
522 | 533 | if (sock.server) { |
523 | 534 | throw new FS.ErrnoError({{{ cDefs.EINVAL }}}); // already listening |
524 | 535 | } |
| 536 | +#if EXPORT_ES6 |
| 537 | + var WebSocketServer = SOCKFS.websocketModule.Server; |
| 538 | +#else |
525 | 539 | var WebSocketServer = require('ws').Server; |
| 540 | +#endif |
526 | 541 | var host = sock.saddr; |
527 | 542 | #if SOCKET_DEBUG |
528 | 543 | dbg(`websocket: listen: ${host}:${sock.sport}`); |
|
0 commit comments