How asmit-3009/cpp-chat-app works
This is a multi-client TCP chat with a React browser UI and a Node.js Socket.IO-to-TCP bridge. A browser user joins with a username, sends messages through the bridge to the C++ server, and receives broadcasts and join/leave events back through the bridge. A terminal client is also supported. The C++ server accepts clients and handles each connection in a thread. README capabilities are included; the sampled code does not establish a separate persistence layer.
Main entry points: server.cpp Client handler · server.js Socket.IO bridge · client.cpp Terminal client · App.js Chat interface
Components 9
Browser chat
- Chat interface
frontend/src/App.js
Socket bridge
- Socket.IO bridge
backend/server.js - Message parser
backend/server.js
TCP chat
- TCP listener
src/server.cpp - Client handler
src/server.cpp - Message broadcast
src/server.cpp - Terminal client
src/client.cpp - Socket settings
include/common.h
Other components
- Chat user
Connections 16
- Chat user → Chat interface: uses
- Chat interface → Socket.IO bridge: Socket.IO events
- Socket.IO bridge → Chat interface: emits events
- Socket.IO bridge → TCP listener: opens TCP connection
- Socket.IO bridge → Client handler: writes username/messages
- Client handler → Socket.IO bridge: sends prompts/messages
- Client handler → Message parser: formats chat lines
- Socket.IO bridge → Message parser: parses received lines
- TCP listener → Client handler: dispatches clients
- Client handler → Message broadcast: broadcasts events
- Message broadcast → Client handler: sends to peers
- Terminal client → TCP listener: connects to
- Terminal client → Client handler: sends chat input
- Client handler → Terminal client: sends chat output
- Socket settings → TCP listener: defines limits
- Socket settings → Terminal client: defines connection settings