After starting a streaming session, connect to the WebSocket endpoint to receive real-time logs.
Connection
wss://api.logfleet.io/api/v1/stream/ws/{sessionId}
Authentication
Include your JWT token as a query parameter:
wss://api.logfleet.io/api/v1/stream/ws/{sessionId}?token={jwt_token}
Log Messages
{
"type": "log",
"timestamp": "2024-01-15T10:30:00.123Z",
"level": "info",
"message": "Request processed successfully",
"source": "nginx",
"metadata": {
"request_id": "abc123",
"status_code": 200
}
}
Control Messages
{
"type": "control",
"event": "session_ending",
"reason": "timeout",
"seconds_remaining": 30
}
Example
const token = "your-jwt-token";
const sessionId = "session-uuid";
const ws = new WebSocket(
`wss://api.logfleet.io/api/v1/stream/ws/${sessionId}?token=${token}`
);
ws.onopen = () => {
console.log("Connected to log stream");
};
ws.onmessage = (event) => {
const data = JSON.parse(event.data);
if (data.type === "log") {
console.log(`[${data.level}] ${data.message}`);
} else if (data.type === "control") {
console.log(`Control: ${data.event}`);
}
};
ws.onclose = () => {
console.log("Stream ended");
};
Session Lifecycle
- Start: Call
POST /api/v1/stream/start to create a session
- Connect: Open WebSocket connection with session ID
- Stream: Receive log messages in real-time
- Warning: Receive
session_ending control message 30 seconds before timeout
- End: Connection closes when session times out or is stopped
Sessions automatically terminate after the specified timeout (default: 5 minutes, max: 1 hour).
This prevents forgotten streams from running indefinitely.