Realtime WebSocket Gateway yang dirancang khusus untuk ekosistem FerdevAPI.
Gateway ini berfungsi sebagai Realtime Transport Layer yang terpisah dari REST API utama, sehingga komunikasi realtime dapat berjalan secara efisien tanpa membebani business logic maupun database layer.
Architecture Separation
Gateway tidak menyimpan data permanen. Semua data utama tetap disimpan melalui REST API dan database, sedangkan gateway hanya bertugas mengelola koneksi realtime dan distribusi event.
🏗️ Project Structure
ferdev-message-socket/
│
├── config/
│ ├── cors.js
│ └── db.js
│
├── controllers/
│ └── message.controller.js
│
├── middlewares/
│ └── notFound.js
│
├── routes/
│ ├── health.routes.js
│ └── message.routes.js
│
├── socket/
│ ├── chat.socket.js
│ └── index.js
│
├── utils/
│ └── onlineUsers.js
│
├── .env.example
├── .gitignore
├── app.js
├── server.js
├── package.json
└── package-lock.json
---## 🧠 Architecture Flow
| Step | Action |
|--------|--------|
| 1 | Client connect ke WebSocket |
| 2 | Client join room |
| 3 | REST API trigger event |
| 4 | Gateway broadcast ke room |
| 5 | Client menerima event |Install Dependencies
npm install
Development Mode
npm run dev
Production Mode
npm start
PM2 Deployment
pm2 start server.js --name ferdev-message-gateway
---Endpoint monitoring untuk memastikan service berjalan dengan normal.
Request
GET /health
Response
{
"success": true,
"status": 200,
"creator": "Feri",
"message": "Semua Berjalan Normal",
"onlineUsers": 0,
"uptime": 1410.81436888,
"timestamp": "2026-05-31T15:06:12.942Z"
}Gateway dapat menerima trigger event dari backend utama melalui:
Internal HTTP Request / websocket connection
REST API
│
▼
Gateway Endpoint
│
▼
Socket BroadcastGateway menerapkan beberapa lapisan penanganan error:
- Global Not Found Middleware
- Structured Controller Pattern
- Graceful Server Bootstrap
- Centralized Error Response
«Ferdev Message Socket Gateway bukan message broker.» Prinsip utama project ini adalah Loose Coupling Architecture, sehingga REST API dan Gateway dapat berjalan secara independen.
Feri Pratama
Built with ❤️ for the FerdevAPI ecosystem.