Revere WebSocket Transport

Overview

Streams log events as JSON frames over a WebSocket connection.

Useful for real-time log monitoring, development tooling, and AI agent log feeds. The transport reconnects automatically when the connection is lost.

Usage

import 'package:websocket_transport/websocket_transport.dart';
import 'package:revere/core.dart';
final transport = WebSocketTransport(
  'ws://localhost:9000/logs',
  level: LogLevel.debug,
);
final logger = Logger();
logger.addTransport(transport);

await logger.info('Hello WebSocket!');

// Dispose when done:
await transport.dispose();

JSON payload

Each log event is sent as a UTF-8 text frame:

{
  "level": "info",
  "message": "Hello WebSocket!",
  "timestamp": "2024-03-01T12:00:00.000Z",
  "context": "AuthService"
}

context, error, and stackTrace are omitted when null.

Configuration

Parameter Type Default Description
uri String required WebSocket server URI (e.g. ws://host:port/path)
level LogLevel LogLevel.info Minimum level to forward
maxReconnectDelay Duration Duration(seconds: 30) Back-off cap for reconnection

Reconnection

Events emitted while the connection is unavailable are dropped. The transport retries with exponential back-off (1 s → 2 s → 4 s … capped at maxReconnectDelay).

App-side Setup

Add dependency in your app's pubspec.yaml:

dependencies:
  websocket_transport:
    path: ../websocket_transport

Additional Information

  • Works on all Dart/Flutter platforms that support dart:io.
  • For more information, see revere.