How god3tier/chattingservice works
This is a terminal chat client paired with an Actix WebSocket server. A user selects a room and username, enters the connected-room view, and sends text through the client WebSocket to a server room, which fans messages out to members and persists room history when the room closes. The map includes the terminal UI, client transport, server room/user runtime, and MongoDB. Some client orchestration and UI wiring are unsampled; those relationships are omitted or marked unverified rather than inferred as certain.
Main entry points: controller.rs Room endpoints · server.rs Room broadcast · app_control.rs App controller · connected_room.rs Connected room
Components 18
Client interface
- Terminal startup
client/src/main.rs - App controller
client/src/app/app_control.rs - App state
client/src/app/appstate.rs - Room selection
client/src/app/disconnected_room.rs - Connected room
client/src/app/connected_room.rs - Chat display
client/src/app/widget/messages.rs - Text input display
client/src/app/widget/display_text_box.rs - Selection buttons
client/src/app/widget/filling_buttons.rs
Client transport
- WebSocket transport
client/src/websocket_function.rs - Incoming response
client/src/response/mod.rs
Server runtime
- HTTP server setup
server/src/main.rs - Room endpoints
server/src/roomwebserver/controller.rs - Room broadcast
server/src/roomwebserver/server.rs - User session
server/src/user/mod.rs - Chat message
server/src/message.rs - Room request data
server/src/dto.rs
Persistence
- MongoDB
Other components
- Chat user
Connections 23
- Chat user → Terminal startup: uses
- Terminal startup → App controller: starts
client/src/main.rs - App controller → App state: coordinates
- App controller → Room selection: shows
- App controller → Connected room: shows
- Room selection → Text input display: renders
client/src/app/disconnected_room.rs - Room selection → Selection buttons: renders
client/src/app/disconnected_room.rs - Connected room → Chat display: renders
client/src/app/connected_room.rs - Chat display → Connected room: uses input mode
client/src/app/widget/messages.rs - Connected room → WebSocket transport: starts transport
client/src/app/connected_room.rs - WebSocket transport → Incoming response: constructs
client/src/websocket_function.rs - WebSocket transport → Room endpoints: WebSocket request
- HTTP server setup → Room endpoints: routes requests
server/src/main.rs - HTTP server setup → MongoDB: connects database
server/src/main.rs - Room endpoints → Room request data: accepts query
server/src/roomwebserver/controller.rs - Room endpoints → Room broadcast: creates or joins
server/src/roomwebserver/controller.rs - Room endpoints → User session: creates session
server/src/roomwebserver/controller.rs - Room endpoints → MongoDB: loads history
server/src/roomwebserver/controller.rs - Room broadcast → User session: adds member
server/src/roomwebserver/server.rs - User session → Room broadcast: submits messages
server/src/user/mod.rs - Room broadcast → Chat message: broadcasts messages
server/src/roomwebserver/server.rs - User session → Chat message: creates messages
server/src/user/mod.rs - Room broadcast → MongoDB: stores history
server/src/roomwebserver/server.rs