0.0.3 • Published 2 years ago
node-edge-server v0.0.3
Edge Server Adapter for Node.js
🚀 Simple, Lightweight
This adapter allows you to run your Worker application on Node.js. It utilizes web standard APIs implemented in Node.js version 18 or higher.
You can now share the same code between Edge Workers and Node.js. No more express.
Required Node.js 18 or higher.
Install
npm install node-edge-serverSupported both CommonJS and ESM.
Usage
import { serve } from 'node-edge-server'
async function handler(req: Request) {
return new Response('200 OK')
}
serve(handler, (info) => {
console.log(`Listening on http://127.0.0.1:${info.port}`) // Listening on http://127.0.0.1:3000
})Run it then open http://127.0.0.1:3000.
Note KV, DO, or any specific to cloud provider is not included. You should handle it yourself.
Options
interface ServerOptions {
port?: number; // default 3000
hostname?: string; // default 0.0.0.0
signal?: AbortSignal; // signal to close the server
};port
serve(handler, 3000, (info) => {
console.log(`Listening on http://127.0.0.1:${info.port}`)
})https
import https from 'node:https'
import fs from 'node:fs'
import { createRequestListener } from 'node-edge-server'
async function handler(req: Request) {
return new Response('200 OK')
}
const options = {
key: fs.readFileSync('key.pem'),
cert: fs.readFileSync('cert.pem')
};
https.createServer(options, createRequestListener(handler)).listen(8443);API
serve(fetchHandler: FetchHandler)
serve serves your handler on the Node.js HTTP server.
serve(fetchHandler: FetchHandler): http.Server;
serve(fetchHandler: FetchHandler, onListen: OnListen): http.Server;
serve(fetchHandler: FetchHandler, port: number): http.Server;
serve(fetchHandler: FetchHandler, port: number, onListen: OnListen): http.Server;
serve(fetchHandler: FetchHandler, options: ServerOptions): http.Server;
serve(fetchHandler: FetchHandler, options: ServerOptions, onListen: OnListen): http.Server;createRequestListener(fetchHandler: FetchHandler)
createRequestListener wraps your handler and returns a Node.js HTTP request listener that can be passed to https.createServer or express route.
Streaming
This also supports media streaming. Thank to fetch.
Author
- Ninh Pham https://github.com/ReeganExE
- Yusuke Wada https://github.com/yusukebe
Credit
- Cloudflare https://github.com/cloudflare
- Yusuke Wada https://github.com/yusukebe
License
MIT