Open
Description
Version: Deno 2.3.6
The code below works on node (after changing the import), but not on Deno. The req.socket.on("close",...
never gets called on Deno so systems that use SSEs or require the client to initiate the disconnect will leak. Using the debugger shows that req.socket.#request.signal
does exist, but req.socket.signal
is undefined. I guess this means kBindToAbortSignal was never called.
// deno --allow-net sse.js
import http from "node:http";
// node sse.js
//import http from "http";
const server = http.createServer((req, res) => {
res.writeHead(200,);
// On connect.
res.write(`Client connected!\n\n`);
console.log(`Client connected!`);
const interval = setInterval(() => {
console.log(req.socket); // _events are properly bound for FakeSocket
console.log(req.signal); // undefined
console.log(req.socket.signal); // undefined
debugger;
res.write(`${new Date().toISOString()}\n`);
console.log(`${new Date().toISOString()}`);
}, 1000);
// On close. THIS DOESN"T GET CALLED ON DENO.
req.socket.on("close", () => {
console.log("Client disconnected from SSE stream.");
clearInterval(interval);
});
});
const port = 3141;
server.listen(port, () => console.log(`Server is running on http://localhost:${port}`));
Metadata
Metadata
Assignees
Labels
Type
Projects
Milestone
Relationships
Development
No branches or pull requests
Activity