Restbed alternatives and similar libraries
Based on the "Networking" category.
Alternatively, view Restbed alternatives based on common mentions on social networks and blogs.
-
libcurl
A command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. libcurl offers a myriad of powerful features -
Muduo
Event-driven network library for multi-threaded Linux server in C++11 -
uWebSockets
Simple, secure & standards compliant web server for the most demanding of applications -
C++ Workflow
C++ Parallel Computing and Asynchronous Networking Engine -
POCO
The POCO C++ Libraries are powerful cross-platform C++ libraries for building network- and internet-based applications that run on desktop, server, mobile, IoT, and embedded systems. -
C++ REST SDK
The C++ REST SDK is a Microsoft project for cloud-based client-server communication in native code using a modern asynchronous C++ API design. This project aims to help C++ developers connect to and interact with services. -
Proxygen
A collection of C++ HTTP libraries including an easy to use HTTP server. -
RakNet
RakNet is a cross platform, open source, C++ networking engine for game programmers. -
evpp
A modern C++ network library for developing high performance network services in TCP/UDP/HTTP protocols. -
boost.beast(new repo)
HTTP and WebSocket built on Boost.Asio in C++11 -
Simple-Web-Server
A very simple, fast, multithreaded, platform independent HTTP and HTTPS server and client library implemented using C++11 and Boost.Asio. Created to be an easy way to make REST resources available from C++ applications. -
wdt
Warp speed Data Transfer (WDT) is an embeddedable library (and command line tool) aiming to transfer data between 2 systems as fast as possible over multiple TCP paths. -
PcapPlusPlus
PcapPlusPlus is a multiplatform C++ library for capturing, parsing and crafting of network packets. It is designed to be efficient, powerful and easy to use. It provides C++ wrappers for the most popular packet processing engines such as libpcap, Npcap, WinPcap, DPDK and PF_RING. -
cpp-netlib
The C++ Network Library Project -- cross-platform, standards compliant networking library. -
Silicon
A high performance, middleware oriented C++14 http web framework please use matt-42/lithium instead -
dotenv-linter
⚡️Lightning-fast linter for .env files. Written in Rust 🦀 -
Simple-WebSocket-Server
A very simple, fast, multithreaded, platform independent WebSocket (WS) and WebSocket Secure (WSS) server and client library implemented using C++11, Boost.Asio and OpenSSL. Created to be an easy way to make WebSocket endpoints in C++. -
RESTinio
Cross-platform, efficient, customizable, and robust asynchronous HTTP/WebSocket server C++14 library with the right balance between performance and ease of use -
libhttpserver
C++ library for creating an embedded Rest HTTP server (and more) -
nope.c
WAFer is a C language-based software platform for scalable server-side and networking applications. Think node.js for C programmers. -
Seasocks
Simple, small, C++ embeddable webserver with WebSockets support -
net_skeleton
Async non-blocking multi-protocol networking library for C/C++ -
D++
C++ Discord API Bot Library - D++ is Lightweight and scalable for small and huge bots! -
IXWebSocket
websocket and http client and server library, with TLS support and very few dependencies -
tntnet
Tntnet is a web application server for web applications written in C++. -
QuantumGate
QuantumGate is a peer-to-peer (P2P) communications protocol, library and API written in C++. -
nanoMODBUS
A compact MODBUS RTU/TCP C library for embedded/microcontrollers -
Barracuda App Server
Embedded Web Server Library with Integrated Scripting Engine -
NetIF
Header-only C++14 library for getting addresses associated with network interfaces without name lookups on Windows, macOS, Linux, and FreeBSD
Write Clean C++ Code. Always.
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Restbed or a related project?
README
Restbed is a comprehensive and consistent programming model for building applications that require seamless and secure communication over HTTP, with the ability to model a range of business processes, designed to target mobile, tablet, desktop and embedded production environments.
It's akin to embedding NGINX into your companies own product line. -- Solutions Architect, Bellrock Technology
Features
Feature | Description |
---|---|
WebSockets | Full-duplex communication channels over a single TCP connection. |
Server-Sent Events | Server-Sent Events enables efficient server-to-client streaming of text-based event data—e.g., real-time notifications or updates generated on the server. |
Comet | Long polling model to allow long-held HTTP requests for pushing data from the server to client. |
SSL/TLS | Secure over the wire communication allowing you to transmit private data online. |
Session Management | Create custom HTTP session persistence and management logic. |
HTTP Pipelining | A technique allowing multiple HTTP requests to be sent on a single TCP connection without waiting for the corresponding responses. |
Path Parameters | Annotate URIs with custom path parameters such as resource keys, revisions, etc... |
Query Parameters | Automated query parameter parsing. |
Header Filters | Filter incoming HTTP requests by headers. |
Logging | Customise how and where log entries are created. |
Multi-Path Resources | Give a resource multiple paths for improved readability. |
Customisable Methods | Add your own custom HTTP methods. |
Compression | Adaptability to address any form of compression GZip, Deflate, etc... |
Encoding | Adaptability to address any form of encoding UTF-32, ASCII, etc... |
Rules Engine | Reduce complexity by processing incoming requests with readable units of code. |
HTTP/HTTPS | Built in client capabilities with optional SSL peer certificate verification. Deprecated |
IPv4/IPv6 | Internet Protocol Version 4/6 Network Support. |
Architecture | Asynchronous single or multi-threaded architecture, capable of addressing the C10K problem. |
Converters | Built-in Path, Query, and Header conversions for primary data-types. |
Authentication | Separate Service and/or Resource level authentication. |
Error Handling | Separate Service and/or Resource level error handling. |
Address Binding | Bind HTTP and/or HTTPS services to separate IP addresses. |
Signal Handling | Capture OS generated process signals. |
Documentation | High-quality documentation covering the architecture and API. |
Compliance | Flexibility to address HTTP 1.0/1.1+ compliance. |
Mature | Secure, Stable, and extensively tested since 2013. |
Community | Active, vibrant and energetic open source community. |
Support | Commercial support is available from Corvusoft. |
Example
#include <memory>
#include <cstdlib>
#include <restbed>
using namespace std;
using namespace restbed;
void post_method_handler( const shared_ptr< Session > session )
{
const auto request = session->get_request( );
int content_length = request->get_header( "Content-Length", 0 );
session->fetch( content_length, [ ]( const shared_ptr< Session > session, const Bytes & body )
{
fprintf( stdout, "%.*s\n", ( int ) body.size( ), body.data( ) );
session->close( OK, "Hello, World!", { { "Content-Length", "13" } } );
} );
}
int main( const int, const char** )
{
auto resource = make_shared< Resource >( );
resource->set_path( "/resource" );
resource->set_method_handler( "POST", post_method_handler );
auto settings = make_shared< Settings >( );
settings->set_port( 1984 );
settings->set_default_header( "Connection", "close" );
Service service;
service.publish( resource );
service.start( settings );
return EXIT_SUCCESS;
}
More in-depth examples can be found here. To see Restbed used in anger, please visit Corvusoft's RestQ project.
License
© 2013-2020 Corvusoft Limited, United Kingdom. All rights reserved.
The Restbed framework is dual licensed; See [LICENSE](LICENSE) for full details.
Support
Please contact [email protected], for support and licensing options including bespoke software development, testing, design consultation, training, mentoring and code review.
Please submit all enhancements, proposals, and defects via the issue tracker; Alternatively ask a question on StackOverflow tagged #restbed.
Build
git clone --recursive https://github.com/corvusoft/restbed.git
mkdir restbed/build
cd restbed/build
cmake [-DBUILD_SSL=NO] [-DBUILD_TESTS=NO] ..
make install
make test
You will now find all required components installed in the distribution sub-folder.
Building with external libraries
If you wish to build with external libraries (OpenSSL, ASIO).
git clone https://github.com/corvusoft/restbed.git
mkdir restbed/build
cd restbed/build
cmake [-DBUILD_SSL=NO] [-DBUILD_TESTS=NO] ..
make install
make test
Windows Build Instructions
For Microsoft Visual Studio instructions please see feature #17.
Building restbed - Using vcpkg
You can download and install restbed using the vcpkg dependency manager:
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg install restbed
The restbed port in vcpkg is kept up to date by Microsoft team members and community contributors. If the version is out of date, please create an issue or pull request on the vcpkg repository.
Documentation
This codebase is intended to be as self documenting as possible. We have supplied many examples and test suites to help aid developers.
You can locate the latest design and API documentation here.
Minimum Requirements
Resource | Requirement |
---|---|
Compiler | C++14 compliant or above |
OS | BSD, Linux, Mac OSX, Windows, Raspbian |
Road Map
Milestone | Feature | Status |
---|---|---|
0.0 | Asynchronous HTTP Service | complete |
1.0 | HTTP 1.0 Compliance | complete |
2.0 | HTTP 1.1 Compliance | complete |
2.5 | Secure Socket Layer | complete |
2.5 | Simultaneous Network Ports (HTTP/HTTPS) | complete |
3.0 | Rules Engine | complete |
3.5 | Schedule Tasks on Service run-loop | complete |
3.5 | Multi-Threaded service capability | complete |
3.5 | Bind Service to specific Address | complete |
3.5 | Session Management | complete |
4.0 | HTTP Client | complete |
4.0 | Signal Handling | complete |
4.5 | API Documentation | complete |
4.5 | Web Sockets | complete |
5.0 | Client-side SSL certificates | development |
5.0 | Resource Caching | development |
5.0 | Runtime Modifications | development |
5.0 | HTTP 2 compliance | development |
5.0 | Refactor, Reduce, Reuse | pending |
Contact
Method | Description |
---|---|
Tweet us your questions & feature requests. | |
[email protected] | Support related queries. |
[email protected] | Sale related queries. |
*Note that all licence references and agreements mentioned in the Restbed README section above
are relevant to that project's source code only.