juice_messaging
Canonical specification for the juice_messaging companion package
Purpose
WebSocket-based real-time messaging with automatic reconnection.
Dependencies
External: None
Juice Packages:
- juice_network - Optional REST fallback
- juice_connectivity - Monitor connection for reconnect
Architecture
Bloc: MessagingBloc
Lifecycle: Permanent
State
class MessagingState extends BlocState {
final ConnectionStatus status; // disconnected, connecting, connected, reconnecting
final List<Message> messages;
final List<Channel> subscribedChannels;
final Map<String, MessageStatus> pendingMessages;
final String? lastError;
final int reconnectAttempts;
}
Events
ConnectEvent- Establish WebSocket connectionDisconnectEvent- Close connectionSendMessageEvent- Send message to channelReceiveMessageEvent- Message receivedSubscribeChannelEvent- Subscribe to channel
Rebuild Groups
messaging:status- Connection statusmessaging:channel:{id}- Per-channel messagesmessaging:pending- Pending message status
Integration Points
StateRelay from:
- juice_connectivity - Auto-reconnect
- juice_auth - Authenticated connections
Open Questions
To be discussed