This is the main entrypoint of the server. It is used for every server and allow you to run either in serverless mode or as a long running server.
If you want to better understand how to implement your own Wrapper, the easiest way would be to take a look at one of the existing included Wrapper.
Couple of things to note :
- If you want to use streaming (for the
noderuntime of next), you'll need to create aStreamCreatorand pass it to thehandler. You can find some example in the node or aws-lambda-streaming wrapper. - If you don't use streaming (like in the default
aws-lambdawrapper), you may still need to provide a fakeStreamCreatorto thehandlerto avoid a weird issue with Node itself (see here for an example and a more thorough explanation). - If you use the
edgeruntime of Next (either for the external middleware or for anedgeroute or page), you don't need theStreamCreatorat all. - If you are in a serverless environment and it supports
waitUntil, you should pass it to the handler as it is done in the cloudflare-edge wrapper. This might not be necessary depending on where you run it (for example theaws-lambda-streamingor thenodewrapper doesn't need it.)
The aws-lambda Wrapper is the default wrapper for AWS Lambda. It is used by default if you don't provide any Wrapper in your configuration.
- [ ] Streaming
- [ ] Proper support for
waitUntil
The aws-lambda-streaming Wrapper is a wrapper that allows you to use streaming in AWS Lambda. Streaming must be enabled for this lambda.
- [x] Streaming
- [x] Proper support for
waitUntil
The aws-lambda-compressed Wrapper is a wrapper that will compress the response body by default. Compression will be applied in the following priority order: br (Brotli) → gzip → deflate.
If none of these is found, we just return the body as is. The compression quality for brotli can be configured using the BROTLI_QUALITY environment variable. If not set, it defaults to 6.
- [x] Compression
- [ ] Streaming
- [ ] Proper support for
waitUntil
The cloudflare-edge Wrapper is the wrapper for Cloudflare Workers. It should be used for the external middleware and for the edge runtime of Next.
- [x] Streaming
- [x] Proper support for
waitUntil
The cloudflare-node Wrapper is the wrapper for Cloudflare Workers. It should be used only with the node runtime of Next and if you use @opennextjs/cloudflare.
- [x] Streaming
- [x] Proper support for
waitUntil
The node Wrapper is the wrapper for classic Node.js Server. This one is a long running server.
- [x] Streaming
- [x] Proper support for
waitUntil
The express-dev Wrapper is the wrapper for a classic Express server. It is a long running process and should be used for development purposes only.
- [x] Streaming
- [x] Proper support for
waitUntil
The dummy Wrapper is a dummy implementation that will just forward the event and StreamCreator to the handler.
- [ ] Streaming
- [ ] Proper support for
waitUntil