All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Refactored WebSocket module to use native vix::http layer
- Removed implicit dependencies on Boost-based HTTP internals
- Updated server, client and session implementations to new core API
- Simplified protocol handling and routing integration
- Improved internal consistency with vix::async runtime
- Updated OpenAPI WebSocket documentation integration
Changes:
- WebSocket now runs fully on top of the new Vix HTTP stack
- Internal APIs aligned with Request / ResponseWrapper model
- Examples updated to reflect new architecture
This release aligns the WebSocket module with Vix v2 core and completes the transition away from Boost-based internals.
websocket: introduce runtime layer and refresh examples
• Added new websocket runtime system: - include/vix/websocket/Runtime.hpp - include/vix/websocket/AttachedRuntime.hpp providing a dedicated io_context, lifecycle management, and attach-to-HTTP mode. • Added new example demo files: - examples/chat_room.cpp - examples/simple_client.cpp - examples/simple_server.cpp • Updated existing example sources: - advanced/server.cpp to use new runtime API & metrics - simple/minimal_ws_server.cpp cleanup and API alignment • Revised examples/CMakeLists.txt to: - build all demos consistently - expose runtime headers correctly This prepares the module for integration with Vix::App and upcoming WS routing features.
feat(websocket): add rooms + persistent message store (SQLite + WAL)
-
Added high-level WebSocket rooms API: • join_room(session, room) • leave_room(session, room) • broadcast_room_json(room, type, payload)
-
Updated websocket::Server to manage room membership and routing.
-
Added extensible persistence layer: • MessageStore (interface) - append(message) - list_by_room(room, limit, before_id) - replay_from(id)
• SqliteMessageStore (SQLite3 + WAL enabled) - Creates table ws_messages(id, kind, room, type, ts, payload_json) - Safe concurrent writes, WAL mode for high performance - Full JSON persistence for payload
-
Added new files: • include/vix/websocket/MessageStore.hpp • include/vix/websocket/SqliteMessageStore.hpp • src/SqliteMessageStore.cpp • examples/config/config.json (WebSocket demo)
-
Updated existing components: • client.hpp → added JSON message support, room commands, auto-reconnect improvements • protocol.hpp → extended JsonMessage with kind, room, timestamp, id • server.hpp → room map, typed messages, storage hooks • CMakeLists.txt → install SqliteMessageStore and enable SQLite linkage • examples/CMakeLists.txt → added chat example with rooms + persistence
This commit completes: ✓ WebSocket rooms ✓ Strict JSON protocol with envelopes ✓ Persistent chat history via SQLite + WAL ✓ Ready for replay API and message batching
- Initial project scaffolding for the
vixcpp/websocketmodule. - CMake build system:
- STATIC vs header-only build depending on
src/contents. - Integration with
vix::coreand optional JSON backend. - Support for sanitizers via
VIX_ENABLE_SANITIZERS.
- STATIC vs header-only build depending on
- Basic repository structure:
include/vix/websocket/for public headers.src/for implementation files.
- Release workflow:
Makefilewithrelease,commit,push,merge, andtagtargets.changelogtarget wired toscripts/update_changelog.sh.