Skip to content

Modern Alternative: sioxx – A Maintained Socket.IO C++ Client #453

Description

@jfayot

Hi @socketio maintainers and community,
I’m reaching out because I noticed that socket.io-client-cpp hasn’t seen significant updates in a while (last major commit in 2023, with some fixes in 2025). As a long-time user of Socket.IO in C++, I understand how valuable a reliable, up-to-date client is for projects relying on real-time communication.

Given the lack of recent activity here, I wanted to share that I’ve been developing sioxx, a modern C++17 Socket.IO client built on Boost.Beast and nlohmann-json, with the following improvements over the original:
✅ Actively maintained (with a roadmap for future development)
✅ Full Socket.IO v4+ support
✅ WebSocket + HTTP long-polling fallback
✅ MessagePack parser support
✅ Custom parser support (users can plug in their own serialization strategies)
✅ Modern CMake (FetchContent for dependencies, find_package support, shared/static library options)
✅ Thread-safe API with explicit threading model
✅ Comprehensive testing (unit tests + end-to-end tests with a bundled Node.js server)
✅ Documentation (Doxygen + Sphinx, with architecture diagram)

Why sioxx?
I created sioxx to address gaps I encountered while using socket.io-client-cpp in production, particularly around:

  • Lack of HTTP long-polling fallback (critical for environments where WebSocket is blocked)
  • Binary data handling (MessagePack avoids the JSON placeholder/reconstruction complexity)
  • Modern C++ practices (C++17, RAII...)
  • Build system flexibility (easier integration into larger projects)

Migration Path
For those currently using socket.io-client-cpp, sioxx provides a similar API (inspired by the original) while adding new features. I’ve documented the differences and provided examples to ease the transition. Check out the:

No Hard Feelings
This isn’t meant to criticize socket.io-client-cpp: it’s been a fantastic project that served the community well for years. However, given its current state, I wanted to ensure users have a supported, forward-looking alternative.
If you’re maintaining a project that depends on socket.io-client-cpp, I’d love to hear your thoughts or help with migration. Feel free to:

  • Open an issue in sioxx for questions or feature requests.
  • Contribute to sioxx (PRs are welcome!).
  • Share feedback on what you’d like to see in a modern C++ Socket.IO client.

Thanks for your time, and keep up the great work with Socket.IO!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions