---
title: "createRequestListener"
source: "https://github.com/remix-run/remix/blob/8905f3943706e1f53696ab83e70a84873cabfc90/packages/node-fetch-server/src/lib/request-listener.ts#L95"
---

# createRequestListener

## Summary

Wraps a fetch handler in a Node.js request listener that can be used with:

- [`http.createServer()`](https://nodejs.org/api/http.html#httpcreateserveroptions-requestlistener)
- [`https.createServer()`](https://nodejs.org/api/https.html#httpscreateserveroptions-requestlistener)
- [`http2.createServer()`](https://nodejs.org/api/http2.html#http2createserveroptions-onrequesthandler)
- [`http2.createSecureServer()`](https://nodejs.org/api/http2.html#http2createsecureserveroptions-onrequesthandler)

HTTP/2 requests with conflicting `Host` and `:authority` values are rejected before the handler
is called. They receive a 400 response unless `onError` returns a custom response.

Example:

```ts
import * as http from 'node:http';
import { createRequestListener } from 'remix/node-fetch-server';

async function handler(request) {
  return new Response('Hello, world!');
}

let server = http.createServer(
  createRequestListener(handler)
);

server.listen(3000);
```

## Signature

```ts
function createRequestListener(
  handler: (request: Request) => Response | Promise<Response>,
  options: RequestListenerOptions,
): RequestListener

function createRequestListener(
  handler: FetchHandler,
  options: RequestListenerOptions,
): RequestListener

```

## Parameters

### `handler`

The fetch handler to use for processing incoming requests

### `options`

Request listener options

## Returns

A Node.js request listener function