nodejs-simple-http-server
v0.1.0
Published
Simple HTTP Server | NodeJS
Readme
Simple HTTP Server | NodeJS
Очень простой HTTP-сервер-маршрутизатор без зависимостей на NodeJS-22:
- Никаких
middleware- толькоGET/POSTс текстовым или JSON содержимым. - Ограниченный набор MIME-типов для основных типов файлов - html/css/js/image.
Маршрутизатор может использоваться для примеров при разработке интерфейсов VueJS/React или простых приложений с обслуживанием статических файлов.
Example
npm i -D nodejs-simple-http-serverimport { createServer } from 'nodejs-simple-http-server'
const server = createServer({ port: 7868, noCache: true, favicon: true })
// Путь '/' будет автоматически преобразован к '<STATIC-PATH>/index.html'.
server.static('/', 'your/path/static/files')
server.get('/api/{msg:str}', (req, res) => {
res.bodyJson({ message: req.vars.msg.value })
})
void async function () {
await server.listen()
}()Маршруты могут иметь переменные string|uint и следуют простой логике сортировки - от самого длиного до самого короткого пути и/или в порядке обратной регистрации. Такая последовательность регистрации:
server.handle('/foo/bar', ...) // GET/POST
server.get('/one', ...)
server.get('/two', ...)
server.post('/bar/{value:int}/box', ...)... приведет к сортировке:
1. '/bar/{value:int}/box'
2. '/foo/bar'
3. '/two'
4. '/one'Расширенный пример с описанием в файле demo/server.ts.
- Устанавливаем Dev зависимости
npm iиnpm run dist. - Запускаем сервер(файл
demo/server.ts) кнопкой в разделеVSCode | Run and Debug (Launch TS File)илиF5. - Открываем страницу
http://localhost:7868/.
Использование с WebSocketServer github.com/websockets/ws
import { createServer } from 'nodejs-simple-http-server'
import { type RawData, WebSocketServer } from 'ws'
const server = createServer({ noCache: true }) // Автоматически выбирается свободный порт
const { hostname, port } = await server.listen()
// Передаем ссылку на Node Server
const wss = new WebSocketServer({ server: server.server, path: '/ws' })
wss.on('connection', function connection (ws) {
ws.on('error', console.error.bind(console))
ws.on('message', function message (data: RawData, isBinary: boolean) {
ws.send(data.toString())
})
})