-
Notifications
You must be signed in to change notification settings - Fork 194
Open
Description
Got a really strange issue that boggles my brain.
This is only connected to spdy. If i use http2.createSecureServer it works fine.
Seems like spdy stops streaming after 2048 bytes.


Even more strange. It works fine when i add a simple console.log after the stream.pipe(res); function.
Added a simple code to test with.
Running Node v18.16.0.
"react": "^18.2.0",
"react-dom": "^18.2.0",
"spdy": "^4.0.2"
const React = require('react');
const ReactDOMServer = require('react-dom/server');
const spdy = require('spdy');
const fs = require("fs");
const path = require("path");
const fail = true;
// Fails if buffersize is 229. Works if buffersize is 228....
const buffer = new Buffer(fail ? 229 : 228);
const server = spdy.createServer(
{
key: fs.readFileSync(path.join('keys', 'server.key')),
cert: fs.readFileSync(path.join('keys', 'server.crt')),
ca: fs.readFileSync(path.join('keys', 'ca.crt')),
spdy: {
protocols: ['h2'],
},
requestCert: true,
rejectUnauthorized: false,
},
(req, res) => {
res.setHeader('Content-type', 'text/html');
const stream = ReactDOMServer.renderToPipeableStream(buffer, {
onShellReady: () => {
stream.pipe(res);
// Adding console.log here fixes the problem with buffer size. Then it works fine with >228
// console.log(); // This actually fixes the problem and ends the stream.
},
onShellError: (err) => {
console.error(err);
res.send('<h1>onShellError</h1>')
},
onError: (err) => {
console.error(err);
res.send('<h1>onError</h1>')
},
onAllReady: () => {
res.end();
}
});
}
);
server.listen(1335, () => {
console.log(`Server listening on port 1335`);
});
Metadata
Metadata
Assignees
Labels
No labels