websocket and http client and server library, with TLS support and very few dependencies
Go to file
2020-01-09 13:45:58 -08:00
.github/workflows add gihub actions 2019-09-22 18:45:30 -07:00
CMake (ws) #125 / cmake detects an already installed jsoncpp and will try to use this one if present 2019-12-03 16:01:46 -08:00
docker using centos8 for the default Dockerfile, to get a gdb that display source code when running on OpenShift 2020-01-07 14:58:40 -08:00
docs (apple ssl) unify read and write ssl utility code 2020-01-06 15:19:14 -08:00
ixcobra (cobra client) send a websocket ping every 30s to keep the connection opened 2019-12-24 17:16:41 -08:00
ixcore restructure project 2019-09-10 12:19:22 -07:00
ixcrypto speedup base64 code by reserving memory 2019-09-24 14:17:03 -07:00
ixsentry (cobra-to-sentry) capture application version from device field 2019-12-18 15:41:59 -08:00
ixsnake (cobra) Add TLS options to all cobra commands and classes. Add example to the doc. 2019-12-19 20:49:28 -08:00
ixwebsocket poll: handle POLLNVAL 2020-01-09 13:45:58 -08:00
test (websocket client) better error propagation when errors are detected while sending data + (ws send) detect failures to send big files, terminate in those cases and report error (troubleshooting #140) 2020-01-06 14:34:43 -08:00
third_party update spdlog 2019-12-06 22:05:12 -08:00
tools Add script to extract the version from the header file and remove DOCKER_VERSION 2019-12-06 16:44:05 -08:00
ws formatting 2020-01-09 13:45:31 -08:00
.clang-format update clang format file 2019-09-10 22:17:08 -07:00
.dockerignore fix cobra to sentry + change ws docker file to use alpine (much smaller footprint) 2019-05-31 00:43:22 -07:00
.gitignore update gitignore file 2019-12-20 15:21:36 -08:00
.pre-commit-config.yaml update pre-commit file 2019-09-10 22:18:16 -07:00
.travis.yml ci 2019-09-05 22:32:54 -07:00
appveyor.yml update appveyor file to new directory structure 2019-09-10 12:33:47 -07:00
CMakeLists.txt Allow custom OpenSSL lib, only include openssl/x509v3.h when used. (#143) 2020-01-08 13:57:57 -08:00
docker-compose.yml bunch of docker compose dev changes 2019-12-05 15:18:02 -08:00
Dockerfile using centos8 for the default Dockerfile, to get a gdb that display source code when running on OpenShift 2020-01-07 14:58:40 -08:00
LICENSE.txt First import 2018-09-27 14:57:19 -07:00
makefile (ws) cobra to sentry - created events with sentry tags based on tags present in the cobra messages 2019-12-11 17:28:11 -08:00
mkdocs.yml Add md doc made with mkdocs 2019-08-26 21:25:45 -07:00
README.md add user list in readme 2019-12-30 22:16:29 -08:00
SECURITY.md Create SECURITY.md 2019-10-17 06:58:22 -07:00

Hello world

Build status badge

IXWebSocket is a C++ library for WebSocket client and server development. It has minimal dependencies (no boost), is very simple to use and support everything you'll likely need for websocket dev (SSL, deflate compression, compiles on most platforms, etc...). HTTP client and server code is also available, but it hasn't received as much testing.

It is been used on big mobile video game titles sending and receiving tons of messages since 2017 (iOS and Android). It was tested on macOS, iOS, Linux, Android, Windows and FreeBSD. Two important design goals are simplicity and correctness.

// Required on Windows
ix::initNetSystem();

// Our websocket object
ix::WebSocket webSocket;

std::string url("ws://localhost:8080/");
webSocket.setUrl(url);

// Setup a callback to be fired (in a background thread, watch out for race conditions !)
// when a message or an event (open, close, error) is received
webSocket.setOnMessageCallback([](const ix::WebSocketMessagePtr& msg)
    {
        if (msg->type == ix::WebSocketMessageType::Message)
        {
            std::cout << msg->str << std::endl;
        }
    }
);

// Now that our callback is setup, we can start our background thread and receive messages
webSocket.start();

// Send a message to the server (default to TEXT mode)
webSocket.send("hello world");

Interested? Go read the docs! If things don't work as expected, please create an issue on GitHub, or even better a pull request if you know how to fix your problem.

IXWebSocket is actively being developed, check out the changelog to know what's cooking. If you are looking for a real time messaging service (the chat-like 'server' your websocket code will talk to) with many features such as history, backed by Redis, look at cobra.

IXWebSocket client code is autobahn compliant beginning with the 6.0.0 version. See the current test results. Some tests are still failing in the server code.

Users

If your company or project is using this library, feel free to open an issue or PR to amend this list.