Skip to content

Commit 9aed7d0

Browse files
authored
docs: listen for close event on response, not request (remix-run#11249)
* docs: listen for close event on response, not request Fixes remix-run#11248 * chore: update contributors.yml
1 parent 135e8aa commit 9aed7d0

File tree

4 files changed

+17
-10
lines changed

4 files changed

+17
-10
lines changed

contributors.yml

+1
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@
7171
- emzoumpo
7272
- engpetermwangi
7373
- ericschn
74+
- faergeek
7475
- FilipJirsak
7576
- frontsideair
7677
- fyzhu

docs/guides/ssr.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ const app = express();
6666
let handler = createStaticHandler(routes);
6767

6868
app.get("*", async (req, res) => {
69-
let fetchRequest = createFetchRequest(req);
69+
let fetchRequest = createFetchRequest(req, res);
7070
let context = await handler.query(fetchRequest);
7171

7272
// We'll tackle rendering next...
@@ -81,13 +81,13 @@ const listener = app.listen(3000, () => {
8181
Note we have to first convert the incoming Express request into a Fetch request, which is what the static handler methods operate on. The `createFetchRequest` method is specific to an Express request and in this example is extracted from the `@remix-run/express` adapter:
8282

8383
```js filename=request.js
84-
module.exports = function createFetchRequest(req) {
84+
module.exports = function createFetchRequest(req, res) {
8585
let origin = `${req.protocol}://${req.get("host")}`;
8686
// Note: This had to take originalUrl into account for presumably vite's proxying
8787
let url = new URL(req.originalUrl || req.url, origin);
8888

8989
let controller = new AbortController();
90-
req.on("close", () => controller.abort());
90+
res.on("close", () => controller.abort());
9191

9292
let headers = new Headers();
9393

@@ -121,7 +121,7 @@ Once we've loaded our data by executing all of the matched route loaders for the
121121

122122
```js filename=server.jsx lines=[5-16]
123123
app.get("*", async (req, res) => {
124-
let fetchRequest = createFetchRequest(req);
124+
let fetchRequest = createFetchRequest(req, res);
125125
let context = await handler.query(fetchRequest);
126126

127127
let router = createStaticRouter(
@@ -181,7 +181,7 @@ If any loaders redirect, `handler.query` will return the `Response` directly so
181181

182182
```js filename=server.jsx lines=[5-10]
183183
app.get("*", async (req, res) => {
184-
let fetchRequest = createFetchRequest(req);
184+
let fetchRequest = createFetchRequest(req, res);
185185
let context = await handler.query(fetchRequest);
186186

187187
if (

examples/ssr-data-router/server.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ async function createServer() {
5454
}
5555

5656
try {
57-
let appHtml = await render(req);
57+
let appHtml = await render(req, res);
5858
let html = template.replace("<!--app-html-->", appHtml);
5959
res.setHeader("Content-Type", "text/html");
6060
return res.status(200).end(html);

examples/ssr-data-router/src/entry.server.tsx

+10-4
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,12 @@ import {
88
} from "react-router-dom/server";
99
import { routes } from "./App";
1010

11-
export async function render(request: express.Request) {
11+
export async function render(
12+
request: express.Request,
13+
response: express.Response
14+
) {
1215
let { query, dataRoutes } = createStaticHandler(routes);
13-
let remixRequest = createFetchRequest(request);
16+
let remixRequest = createFetchRequest(request, response);
1417
let context = await query(remixRequest);
1518

1619
if (context instanceof Response) {
@@ -29,13 +32,16 @@ export async function render(request: express.Request) {
2932
);
3033
}
3134

32-
export function createFetchRequest(req: express.Request): Request {
35+
export function createFetchRequest(
36+
req: express.Request,
37+
res: express.Response
38+
): Request {
3339
let origin = `${req.protocol}://${req.get("host")}`;
3440
// Note: This had to take originalUrl into account for presumably vite's proxying
3541
let url = new URL(req.originalUrl || req.url, origin);
3642

3743
let controller = new AbortController();
38-
req.on("close", () => controller.abort());
44+
res.on("close", () => controller.abort());
3945

4046
let headers = new Headers();
4147

0 commit comments

Comments
 (0)