The Real-Time Connectivity Mesh for Modern Apps
A managed communication platform that unifies WebSockets and REST APIs into a single, intelligent message bus.
Why use gluer.io?
We handle the infrastructure, connection pooling, and routing so you can focus on building features
🌐 HTTP-to-WebSocket Bridge
Send a standard POST request from any 3rd party tool (Zapier, Webhooks, cURL) and have it processed by your WebSocket workers in real-time.
⚖️ Automatic Load Balancing
Connect multiple backend workers to the same project. Gluer automatically distributes tasks among them.
🔒 Secure Session Management
Built-in session tracking and isolation per project.
🔋 Persistent Connections
No more polling. Maintain full-duplex connections with browsers, mobile apps, and IoT devices.
The Protocol (SMH)
Standard Message Header - A lightweight string header for efficient message routing
Format: Direction:Session:Project:Plugin:Action
{
"smh": ">:user-123:my-saas:orders:create",
"data": { "product_id": 99, "qty": 1 }
}Header Segments:
> (Request) or < (Response)my-saas)auth, chat)login, create)Connection Endpoints
You don't host Gluer; you connect to it
| Actor | Endpoint | Protocol | Description |
|---|---|---|---|
| Frontend | wss://ws.gluer.io/ws/:project/:session | WebSocket | Browsers, React Native, Flutter, IoT. |
| Backend | wss://ws.gluer.io/server/:project/:id | WebSocket | Your Node.js, Python, Go, or Elixir workers. |
| API/Integrations | https://ws.gluer.io/api | HTTPS (POST) | External systems triggering actions via REST. |
Quick Start
Get up and running in minutes
1 Client-Side Integration (JS/TS)
import { GluerJS } from 'gluer-js';
// 1. Initialize
const gluer = new GluerJS({
project: 'my-saas',
url: 'wss://ws.gluer.io' // or your the URL of your local instance of Gluer
});
// 2. Connect
gluer.connect();
// 3. Send a command and await response (RPC style)
async function createOrder() {
const response = await gluer.sendMsgSync('orders:create', { id: 500 });
console.log('Order created:', response);
}2 Backend Worker (Node.js)
const WebSocket = require('ws');
// Connect as a worker
const ws = new WebSocket('wss://ws.gluer.io/server/my-saas/worker-01');
ws.on('message', (msg) => {
const payload = JSON.parse(msg);
// Parse Header: >:user-123:my-saas:orders:create
if (payload.smh.includes('orders:create')) {
// Process logic...
const result = { status: 'confirmed', order_id: 999 };
// Reply to the user (flip direction to <)
const replyHeader = payload.smh.replace('>', '<');
ws.send(JSON.stringify({
smh: replyHeader,
uuid: payload.uuid, // Maintain UUID to complete the cycle
data: result
}));
}
});3 The Hybrid Bridge (REST API)
Allow synchronous HTTP calls to interact with your asynchronous WebSocket workers. Perfect for Stripe Webhooks, Zapier, or any external API.
curl -X POST https://ws.gluer.io/api \
-H "Content-Type: application/json" \
-d '{
"smh": ">::my-saas:billing:payment_success",
"data": { "amount": 5000 }
}'What happens?
1. Gluer receives the POST
2. Gluer forwards the message to your WebSocket Worker
3. Worker processes it and sends a JSON response back
4. Gluer responds to the cURL request with that JSON
Built with Battle-Tested Tech
Powered by technologies proven in the most demanding production environments
Erlang/OTP
99.9999999% uptime proven in telecom systems
Cowboy
High-performance HTTP and WebSocket server
Rebar3
Modern Erlang build tool and package manager
Download Gluer
Run Gluer locally on your machine. Available for all major operating systems.
Linux
Supports Ubuntu, Debian, Fedora, and more
Quick Start
chmod +x gluer_cli_linux./gluer_cli_linuxorPORT=8080 ./gluer_cli_linuxmacOS
For macOS 11 and later
Quick Start
chmod +x gluer_cli_macos./gluer_cli_macosorPORT=8080 ./gluer_cli_macosNeed help installing? Check out our installation guide
Ready to Build Real-Time?
Start connecting your WebSocket clients to REST APIs with zero latency today.