Prerequisites
Environment check
Node.js version
v22.7.0
Reproduction repository
https://github.com/mizozobu/msw-socket-mre
Snapshot of the repo for future reference. (I'll delete it once this issue gets resolved).
import http from 'node:http';
import { http as mswHttp, HttpResponse } from 'msw';
import { setupServer } from 'msw/node';
const handlers = [
mswHttp.get('http://exmaple.com/*', async({ request }) => {
console.log('received', request.url);
return HttpResponse.json({});
}),
];
const server = setupServer(...handlers);
server.listen();
const agent = new http.Agent({
keepAlive: true,
});
const sockets = new Set();
const sendRequest = async(id) => {
console.log(`create request for id=${id}`);
const res = await new Promise(resolve => {
const req = http.request(`http://exmaple.com/${id}`, { agent }, (res) => {
resolve(res.body);
});
req.on('error', (e) => {
console.error(`problem with request: ${e.message}`);
});
req.once('socket', (socket) => {
sockets.add(socket);
console.log(sockets.size, 'unique sockets used');
if (socket.connecting) {
socket.once('connect', () => {
console.log(`socket for id=${id} connected`);
req.end();
});
}
else {
req.end();
}
});
});
return res;
}
const list = await Promise.all([
sendRequest('1'),
sendRequest('2'),
sendRequest('3'),
]);
console.log(list);
Reproduction steps
npm i
node index.mjs
Current behavior
3 sockets are created, but only 1 socket emits connect event.
I encountered this when I was using msw with stripe. Some reproduction code was taken from the repo.
Expected behavior
All sockets emit connect event.
Prerequisites
Environment check
mswversionNode.js version
v22.7.0
Reproduction repository
https://github.com/mizozobu/msw-socket-mre
Snapshot of the repo for future reference. (I'll delete it once this issue gets resolved).
Reproduction steps
npm inode index.mjsCurrent behavior
3 sockets are created, but only 1 socket emits
connectevent.I encountered this when I was using msw with stripe. Some reproduction code was taken from the repo.
Expected behavior
All sockets emit
connectevent.