jai-server v1.5.8
Jai Server: Ultra-Fast
Fast, Powerfull, Robust web framework for creating API in Node.js
About
Jai Server is an ultra-high-performance, easy-to-use web framework for Node.js, engineered for building lightning-fast and highly scalable web applications and APIs.
With its innovative lightweight architecture and powerful features, Jai Server dramatically outperforms popular frameworks like Express.js while maintaining simplicity, flexibility, and developer-friendly ergonomics.
š Quick Start
npm install jai-server
const JaiServer = require('jai-server');
const app = JaiServer();
app.get('/', (req, res) => {
res.send('Hello, Jai Server!');
});
app.listen({ port: 3000 }, () => {
console.log('Jai Server is running on http://localhost:3000');
});
š Features
- ā Ready to use: Minimal setup required for rapid development #easy-setup
- š RESTful API support: Create robust APIs with ease #rest-api
- āļø Flexible configuration: Easily adapt to your project needs #customizable
- š Static file serving: Effortlessly serve static content #static-files
- š£ļø Advanced routing: Powerful and intuitive routing system #routing
- š Middleware support: Fine-grained control over request/response flow #middleware
- š Comprehensive HTTP method support: GET, POST, PUT, PATCH, OPTIONS, HEAD, DELETE #http-methods
- š Built-in security features: Enhance your application's security out of the box #security
- š Exceptional performance: Blazing fast, outperforming other popular frameworks #high-performance
- ā” Low overhead: Minimal impact on system resources for efficient scaling #efficient
- š§ HTTP/2 support: Leverage modern web technologies for improved speed #http2
- š Extensible plugin ecosystem: Extend functionality with a growing library of plugins #extensible
š Performance Benchmark
Jai Server significantly outperforms Express.js in rigorous benchmark tests:
Jai Server Performance
āāāāāāāāāāā¬āāāāāāāā¬āāāāāāāā¬āāāāāāāā¬āāāāāāāā¬āāāāāāāāāāā¬āāāāāāāāāā¬āāāāāāāā
ā Stat ā 2.5% ā 50% ā 97.5% ā 99% ā Avg ā Stdev ā Max ā
āāāāāāāāāāā¼āāāāāāāā¼āāāāāāāā¼āāāāāāāā¼āāāāāāāā¼āāāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāā¤
ā Latency ā 14 ms ā 16 ms ā 34 ms ā 35 ms ā 20.68 ms ā 7.48 ms ā 54 ms ā
āāāāāāāāāāā“āāāāāāāā“āāāāāāāā“āāāāāāāā“āāāāāāāā“āāāāāāāāāāā“āāāāāāāāāā“āāāāāāāā
āāāāāāāāāāāāā¬āāāāāāāāāā¬āāāāāāāāāā¬āāāāāāāāāā¬āāāāāāāāāā¬āāāāāāāāāāā¬āāāāāāāāā¬āāāāāāāāāā
ā Stat ā 1% ā 2.5% ā 50% ā 97.5% ā Avg ā Stdev ā Min ā
āāāāāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāāā¼āāāāāāāāā¼āāāāāāāāāā¤
ā Req/Sec ā 46,367 ā 46,367 ā 46,847 ā 48,191 ā 47,126.4 ā 675.32 ā 46,361 ā
āāāāāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāāā¼āāāāāāāāā¼āāāāāāāāāā¤
ā Bytes/Sec ā 9.18 MB ā 9.18 MB ā 9.27 MB ā 9.54 MB ā 9.33 MB ā 134 kB ā 9.18 MB ā
āāāāāāāāāāāāā“āāāāāāāāāā“āāāāāāāāāā“āāāāāāāāāā“āāāāāāāāāā“āāāāāāāāāāā“āāāāāāāāā“āāāāāāāāāā
237k requests in 5.03s, 46.7 MB read
Express.js Performance
āāāāāāāāāāā¬āāāāāāāā¬āāāāāāāā¬āāāāāāāāā¬āāāāāāāāā¬āāāāāāāāāāā¬āāāāāāāāāāā¬āāāāāāāāā
ā Stat ā 2.5% ā 50% ā 97.5% ā 99% ā Avg ā Stdev ā Max ā
āāāāāāāāāāā¼āāāāāāāā¼āāāāāāāā¼āāāāāāāāā¼āāāāāāāāā¼āāāāāāāāāāā¼āāāāāāāāāāā¼āāāāāāāāā¤
ā Latency ā 68 ms ā 71 ms ā 116 ms ā 126 ms ā 74.66 ms ā 11.31 ms ā 154 ms ā
āāāāāāāāāāā“āāāāāāāā“āāāāāāāā“āāāāāāāāā“āāāāāāāāā“āāāāāāāāāāā“āāāāāāāāāāā“āāāāāāāāā
āāāāāāāāāāāāā¬āāāāāāāāāā¬āāāāāāāāāā¬āāāāāāāāāā¬āāāāāāāāāā¬āāāāāāāāāāā¬āāāāāāāāāāā¬āāāāāāāāāā
ā Stat ā 1% ā 2.5% ā 50% ā 97.5% ā Avg ā Stdev ā Min ā
āāāāāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāāā¼āāāāāāāāāāā¼āāāāāāāāāā¤
ā Req/Sec ā 10,775 ā 10,775 ā 13,855 ā 13,991 ā 13,221.6 ā 1,231.34 ā 10,773 ā
āāāāāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāā¼āāāāāāāāāāā¼āāāāāāāāāāā¼āāāāāāāāāā¤
ā Bytes/Sec ā 2.65 MB ā 2.65 MB ā 3.41 MB ā 3.44 MB ā 3.25 MB ā 303 kB ā 2.65 MB ā
āāāāāāāāāāāāā“āāāāāāāāāā“āāāāāāāāāā“āāāāāāāāāā“āāāāāāāāāā“āāāāāāāāāāā“āāāāāāāāāāā“āāāāāāāāāā
67k requests in 5.02s, 16.3 MB read
Key Performance Insights
- 3x Faster: Jai Server handles an impressive ~40,304 req/sec compared to Express.js's ~13,221 req/sec
- 67% Lower Latency: 24.32ms average for Jai Server vs 74.66ms for Express.js
- 2.6x Higher Throughput: 8.5 MB/sec for Jai Server vs 3.25 MB/sec for Express.js
- Consistent Performance: Jai Server shows remarkably low standard deviation in requests per second, indicating stable and reliable performance under high load
- Efficient Resource Utilization: Jai Server processes 3 times more requests while maintaining lower and more consistent latency
Jai Server delivers exceptional, consistent, and scalable performance, making it the ideal choice for high-load applications, microservices, real-time systems, and performance-critical projects. #performance-comparison #high-throughput #low-latency
š Table of Contents
š„ Installation
Get started with Jai Server in your project:
npm install jai-server
šÆ Usage Examples
Basic Server
const JaiServer = require('jai-server');
const app = JaiServer();
app.get('/', (req, res) => {
res.send('Welcome to Jai Server!');
});
app.listen({ port: 3000 }, () => {
console.log('Server running on http://localhost:3000');
});
Serve Static Files
const JaiServer = require('jai-server');
const app = JaiServer({
static: {
dir: `${__dirname}/public`,
basePath: '/static',
},
});
app.listen({ port: 3000 }, () => {
console.log('Static files served at http://localhost:3000/static');
});
HTTPS and HTTP/2 Support
const fs = require('fs');
const JaiServer = require('jai-server');
const app = JaiServer({
http2: true,
allowHTTP1: true,
https: {
key: fs.readFileSync('path/to/key.pem'),
cert: fs.readFileSync('path/to/cert.pem'),
},
});
app.get('/', (req, res) => {
res.send('Secure Jai Server!');
});
app.listen({ port: 443 }, () => {
console.log('Secure server running on https://localhost');
});
RESTful API with Route Parameters
const JaiServer = require('jai-server');
const app = JaiServer();
app.get('/users/:id', (req, res) => {
res.json({ userId: req.params.id, message: 'User details' });
});
app.listen({ port: 3000 });
Using Middleware and Routers
const JaiServer = require('jai-server');
const app = JaiServer();
const router = JaiServer.Router();
// Middleware
app.use((req, res, next) => {
console.log(`Request received at ${new Date()}`);
next();
});
// Router
router.get('/hello', (req, res) => {
res.send('Hello from the router!');
});
app.use('/api', router);
app.listen({ port: 3000 });
Built-in Response Methods
res.send(data)
Sends a response in HTML, text, or any other format. Automatically sets the appropriate Content-Type header.
app.get('/hello', (req, res) => {
res.send('Hello, World!');
});
res.json(data)
Sends a JSON response with Content-Type: application/json.
app.get('/user', (req, res) => {
res.json({ id: 1, name: 'John Doe' });
});
res.redirect(link, statusCode)
Redirects the client to the given URL. The default status code is 302.
app.get('/old-route', (req, res) => {
res.redirect('/new-route');
});
res.status(statusCode)
Sets the HTTP status code for the response. Chainable with other response methods.
app.get('/error', (req, res) => {
res.status(404).send('Page Not Found');
});
res.header(key, value)
Sets custom headers for the response.
app.get('/custom-header', (req, res) => {
res.header('X-Custom-Header', 'MyValue').send('Header set!');
});
res.sendFile(filePath, options, callback)
Serves a file to the client. Options can include root directory, cache settings, etc.
app.get('/download', (req, res) => {
res.sendFile('path/to/file.txt',{
fallthrough:false // Optional: default false
},(err)=>{ // Optional Call Back/Next
});
});
Middleware and Routers
Jai Server supports middleware and routers for more complex applications:
const JaiServer = require('jai-server');
const app = JaiServer();
const router = JaiServer.Router();
// Middleware
app.use((req, res, next) => {
console.log('Time:', Date.now());
next();
});
// Router
router.get('/hello', (req, res) => {
res.send('Hello from the router!');
});
app.use('/api', router);
app.listen({ port: 3000 });
š API Reference
JaiServer(options)
Creates a new Jai Server instance.
Options
Option | Type | Description | Default |
---|---|---|---|
host | string | Host name | 'localhost' |
port | number | Port number | 3000 |
static | object | Static file serving options (jai-static) | null |
https | object | HTTPS options | null |
http2 | boolean | Enable HTTP/2 | false |
allowHTTP1 | boolean | Allow HTTP/1 on HTTP/2 server | true |
allowHTTP1 | boolean | Allow HTTP/1 on HTTP/2 server | true |
timeout | number | Timeout req after ms, default 60000(1min) | 60000 |
app.METHOD(path, handler)
Routes an HTTP request, where METHOD is the HTTP method in lowercase.
app.get('/path', (req, res) => { /* ... */ });
app.post('/path', (req, res) => { /* ... */ });
// Other HTTP methods: put, patch, delete, options, head
app.use(path, function , function...)
Mounts middleware function(s) at the specified path.
app.listen(options, callback)
Starts the server.
š Advanced Features
- Middleware Chaining: Create complex request processing pipelines
- Custom Error Handling: Implement application-specific error management
- Request Body Parsing: Built-in support for JSON and URL-encoded bodies
- Modular Routing: Organize routes using the Router class
- WebSocket Support: Real-time, bidirectional communication
- Database Integration: Easy connection with popular databases
- Authentication Middleware: Secure your routes and APIs
- Rate Limiting: Protect your server from abuse
- CORS Support: Configure Cross-Origin Resource Sharing
- Compression: Optimize response size for faster transmission
š License
Jai Server is open-source software licensed under the MIT license.
Author
Harpal Singh: @hsk11 . Website: Jaijs.org.
Built with ā¤ļø by Harpal Singh
#jai-server #node-js-framework #web-development #backend #api-development #performance-optimization #microservices #realtime-applications #node-js #web-framework #high-performance #rest-api #http2 #express-alternative #api #web-api #restapi #http-server #nodejs-api Enhanced Response Methods #jaijs
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
1 year ago
11 months ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago