app_debugger_websocket Pro
WebSocket traffic inspector sub-brick for
app_debugger. Adds a WebSocket tab to the debugger panel showing a live tree of sent/received frames grouped by endpoint > topic > event. Automatically swapped to a no-op stub in release builds.
Version: 1.0.0
Variables
This brick has no generation-time variables. The inspector works with any WebSocket SDK implementation at runtime.
Prerequisites
app_debuggerbrick must be installed first.- A WebSocket SDK must be configured (e.g.
websocket_sdk_dartorwebsocket_sdk_phoenix).
Usage
Interactive
bash
archipelago generate app_debugger_websocketNon-interactive (CI)
bash
archipelago generate app_debugger_websocket --config my_config.jsonGenerated Structure
features/
└── app_debugger_websocket/
├── app_debugger_websocket_api/
│ └── lib/src/
│ └── models/
├── app_debugger_websocket/
│ └── lib/src/
│ └── di/
└── app_debugger_websocket_noop/
└── lib/src/
└── di/Required Setup
Register the interceptor with your WebSocket client after initializeInjector():
dart
import 'package:app_debugger_websocket_api/app_debugger_websocket_api.dart';
final wsInspector = getIt<WebSocketInspectorSDK>();
if (wsInspector.interceptor != null) {
getIt<WebSocketClient>().addInterceptor(wsInspector.interceptor!);
}The null guard makes this safe in release builds where the noop stub returns null for interceptor.
Ring Buffer Configuration
Override WebSocketInspectorConfig in a custom @module class:
| Field | Default | Description |
|---|---|---|
maxEntries | 500 | Maximum entries kept in the ring buffer |
capturePayloads | true | Whether to capture message payloads |
payloadTruncateLength | 2048 | Truncate payloads longer than this length |
How It Works
WebSocketInspectorSDKImplconstructs aWebSocketDebuggerInterceptorand registers aWebSocketInspectorPagewithDebuggerPanelPageRegistry.DebuggerPanelreadsDebuggerPanelPageRegistry.instance.pagesand appends extra tabs — no import ofapp_debugger_websocketrequired.- The interceptor captures every
onSend,onReceive,onError, andonStateChangecall into a ring buffer. - The panel UI groups entries by endpoint > topic > event using
ExpansionTilewidgets and refreshes reactively viatrafficStream. build_prepare.yamlswapsapp_debugger_websocket→app_debugger_websocket_noopfor release builds.