Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

websocket and http client and server library, with TLS support and very few dependencies

License

NotificationsYou must be signed in to change notification settings

machinezone/IXWebSocket

Repository files navigation

(note from the main developer, sadly I don't have too much time to devote to this library anymore, maybe it's time to pass the maintenance to someone else more motivated ?)

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.

/* *  main.cpp *  Author: Benjamin Sergeant *  Copyright (c) 2020 Machine Zone, Inc. All rights reserved. * *  Super simple standalone example. See ws folder, unittest and doc/usage.md for more. * *  On macOS *  $ mkdir -p build ; (cd build ; cmake -DUSE_TLS=1 .. ; make -j ; make install) *  $ clang++ --std=c++11 --stdlib=libc++ main.cpp -lixwebsocket -lz -framework Security -framework Foundation *  $ ./a.out * *  Or use cmake -DBUILD_DEMO=ON option for other platforms*/#include<ixwebsocket/IXNetSystem.h>#include<ixwebsocket/IXWebSocket.h>#include<ixwebsocket/IXUserAgent.h>#include<iostream>intmain(){// Required on Windowsix::initNetSystem();// Our websocket object    ix::WebSocket webSocket;// Connect to a server with encryption// See https://machinezone.github.io/IXWebSocket/usage/#tls-support-and-configuration//     https://github.com/machinezone/IXWebSocket/issues/386#issuecomment-1105235227 (self signed certificates)    std::stringurl("wss://echo.websocket.org");    webSocket.setUrl(url);    std::cout <<"Connecting to" << url <<"..." << std::endl;// 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 <<"received message:" << msg->str << std::endl;                std::cout <<">" << std::flush;            }elseif (msg->type == ix::WebSocketMessageType::Open)            {                std::cout <<"Connection established" << std::endl;                std::cout <<">" << std::flush;            }elseif (msg->type == ix::WebSocketMessageType::Error)            {// Maybe SSL is not configured properly                std::cout <<"Connection error:" << msg->errorInfo.reason << std::endl;                std::cout <<">" << std::flush;            }        }    );// 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");// Display a prompt    std::cout <<">" << std::flush;    std::string text;// Read text from the console and send messages in text mode.// Exit with Ctrl-D on Unix or Ctrl-Z on Windows.while (std::getline(std::cin, text))    {        webSocket.send(text);        std::cout <<">" << std::flush;    }return0;}

Interested? Go read thedocs! 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 thechangelog 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 atcobra.

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

Starting with the 11.0.8 release, IXWebSocket should be fully C++11 compatible.

Users

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

  • Machine Zone
  • Tokio, a discord library focused on audio playback with node bindings.
  • libDiscordBot, an easy to use Discord-bot framework.
  • gwebsocket, a websocket (lua) module for Garry's Mod
  • DisCPP, a simple but feature rich Discord API wrapper (archived as of Oct 8, 2021)
  • discord.cpp, a discord library for making bots
  • Teleport, Teleport is your own personal remote robot avatar
  • Abaddon, An alternative Discord client made with C++/gtkmm
  • NovaCoin, a hybrid scrypt PoW + PoS based cryptocurrency.
  • Candy, A WebSocket and TUN based VPN for Linux
  • ITGmania, a cross platform Dance Dance Revolution-like emulator.

Alternative libraries

There are plenty of great websocket libraries out there, which might work for you. Here are a couple of serious ones.

uvweb is a library written by the IXWebSocket author which is built on top ofuvw, which is a C++ wrapper forlibuv. It has more dependencies and does not support SSL at this point, but it can be used to open multiple connections within a single OS thread thanks to libuv.

To check the performance of a websocket library, you can look at theautoroute project.

Continuous Integration

OSTLSSanitizerStatus
LinuxOpenSSLNoneBuild2
macOSSecure TransportThread SanitizerBuild2
macOSOpenSSLThread SanitizerBuild2
macOSMbedTLSThread SanitizerBuild2
WindowsDisabledNoneBuild2
UWPDisabledNoneBuild2
LinuxOpenSSLAddress SanitizerBuild2
  • Some tests are disabled on Windows/UWP because of a pathing problem
  • TLS and ZLIB are disabled on Windows/UWP because enabling make the CI run takes a lot of time, for setting up vcpkg.

About

websocket and http client and server library, with TLS support and very few dependencies

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors74


[8]ページ先頭

©2009-2025 Movatter.jp