Webserver (HTTP, REST, websocket, staticfiles)
-
Guten Morgen Kollegen:)
Ich möchte für eine Anwendung eine WebUI implementieren. Teile der Frontend etc. existieren grop bereits.
nun will ich das ganze in nem backend hosten, und suche eine "enfache, leichtgewichtige, kostenlose" webserver lib in c++.
Folgende Anordnungen sollte sie bringen: HTTP (HTTPs opt.), REST, websocket, static content/files).
Habe nur bissel recherchiert und habe folgendes gefunden:
vom Mircosoft: https://github.com/microsoft/cpprestsdk
und das hier https://github.com/mattgodbolt/seasocks
und nun die Frage, was würdet ihr vorschlagen1?
Danke schöne
-
@SoIntMan Hab ich selbst noch nicht benutzt, und kenne ich nur vom hören sagen, musste aber bei der Frage daran denken: https://github.com/eidheim/Simple-Web-Server
-
@Schlangenmensch sagte in Webserver (HTTP, REST, websocket, staticfiles):
@SoIntMan Hab ich selbst noch nicht benutzt, und kenne ich nur vom hören sagen, musste aber bei der Frage daran denken: https://github.com/eidheim/Simple-Web-Server
Danke für den link, sieht auch schonmal vielversprechend aus:)
-
Um noch eine Library in den Ring zu werfen: https://github.com/CrowCpp/Crow
Bisher läuft alles. Außerdem wird es aktiv entwickelt und es wird schnell auf Issues etc. geantwortet. Denke sowas ist auch immer viel wert.
Cpprestsdk hatte ich mir auch mal angeschaut, aber naja der erste Satz im Repo sagt ja schon alles
"cpprestsdk is in maintenance mode and we do not recommend its use in new projects. We will continue to fix critical bugs and address security issues"
-
@Leon0402 sagte in Webserver (HTTP, REST, websocket, staticfiles):
Um noch eine Library in den Ring zu werfen: https://github.com/CrowCpp/Crow
Bisher läuft alles. Außerdem wird es aktiv entwickelt und es wird schnell auf Issues etc. geantwortet. Denke sowas ist auch immer viel wert.
Cpprestsdk hatte ich mir auch mal angeschaut, aber naja der erste Satz im Repo sagt ja schon alles
"cpprestsdk is in maintenance mode and we do not recommend its use in new projects. We will continue to fix critical bugs and address security issues"super danke, werd ich auch mal ausprobieren
-
Nicht super ernst gemeint aber:
https://github.com/5cript/roar Meine eigene die auf boost beast aufbaut.
Aber da hast du dann erstmal eine existierende user base von 1 (dann 2)SSL, WebSocket, HTTP, gibt direkten zugriff auf den upgrade request. Leider fehlt in der doc das example.
https://github.com/5cript/roar/tree/master/examples/websocket
https://5cript.github.io/roar/doxygen/classRoar_1_1WebsocketBase.html
-
@5cript sagte in Webserver (HTTP, REST, websocket, staticfiles):
Nicht super ernst gemeint aber:
https://github.com/5cript/roar Meine eigene die auf boost beast aufbaut.
Aber da hast du dann erstmal eine existierende user base von 1 (dann 2)
SSL, WebSocket, HTTP, gibt direkten zugriff auf den upgrade request. Leider fehlt in der doc das example.
https://github.com/5cript/roar/tree/master/examples/websocket
https://5cript.github.io/roar/doxygen/classRoar_1_1WebsocketBase.htmlsuper, sehr nett, bei gelegenheit schau ich mir das ding an
@Leon0402 sagte in Webserver (HTTP, REST, websocket, staticfiles):
Um noch eine Library in den Ring zu werfen: https://github.com/CrowCpp/Crow
@Leon0402 die crow kann alles was ich brauche und super easy. Danke Dir;) Allerding hatte ich bissel probleme mit der ASIO (Standalone) CMake bin ich ein Noob, habe aber dann Boost installiert und die includes und aliase umgebogen.. läuft
-
@SoIntMan sagte in Webserver (HTTP, REST, websocket, staticfiles):
@Leon0402 die crow kann alles was ich brauche und super easy. Danke Dir;) Allerding hatte ich bissel probleme mit der ASIO (Standalone) CMake bin ich ein Noob, habe aber dann Boost installiert und die includes und aliase umgebogen.. läuft
Welche Plattform nutzt du? Windows? Welche CMake Version?
Ich würde dir nicht empfehlen alias und includes umzubiegen, sondern es ordentlich zu machen. Auf Linux sollte es out of the box gehen, für Windows musst du Cmake einen hint geben, wo er alles findet.
Seit CMake 3.12 wäre meine Empfehlung dort https://cmake.org/cmake/help/latest/variable/PackageName_ROOT.html#variable:<PackageName>_ROOT.
Du setzt entsprechend also
Boost_ROOT
auf dein cmake Verzeichnis von boost z.B.C:\\Program Files\\boost_1_78_0\\lib64-msvc-14.2\\cmake
.Der Pfad ist natürlich User spezifisch (bei dir liegt vlt. boost woanders als bei mir), entsprechend hat der nix in deiner CMake Datei zu suchen. Stattdessen übergebe ihn entweder per UserPresets oder Command Line (oder environment variable, bin ich aber auch kein Freund von).
Untested, aber sollte so dann sein:
cmake -B build -DBoost_ROOT="C:\\Program Files\\boost_1_78_0\\lib64-msvc-14.2\\cmake"
.
In meinem Projekt nutze ich ne UserPreset mit"cacheVariables": { "Boost_ROOT": "C:\\Program Files\\boost_1_78_0\\lib64-msvc-14.2\\cmake" }
Persönlich würde ich Presets empfehlen. Nicht nur machen sie dein Leben ein bisschen leichter, sondern du weißt auch noch in 6 Monaten wie du dein Projekt builden musst
Solche Variablen kommen in die UserPreset, welche in der gitignore steht und nicht in die Projekt Presets. Selbe Begründung: Das ist ein spezifischer Systempfad, der gilt nur für dich.
-
@Leon0402 sagte in Webserver (HTTP, REST, websocket, staticfiles):
Welche Plattform nutzt du? Windows? Welche CMake Version?
Ich würde dir nicht empfehlen alias und includes umzubiegen, sondern es ordentlich zu machen. Auf Linux sollte es out of the box gehen, für Windows musst du Cmake einen hint geben, wo er alles findet.Hallo Leon, da bin ich absolut bei dir:) Das Problem ist, dass ein VS Project habe und keine CMake Project. Bauen primär erstmal auf Windows.
Hatte auch schon die die die Asio header files in mein Projekt mit einzubauen und direkt zu builden.
Habe aber jeztzt mal den Boost umweg gemacht.Ich bin momentan noch nicht vertraut genug mit CMake, und habe gerade unter Projektdruck keine Zeit das sauber damit zu "probieren" .. aber ist definitv auch mein Anspruch ...
Jetzt erstmal straight forward
-
@SoIntMan Vollstes Verständnis dafür Vlt. ist ja irgendwann mal die Zeit oder zumindest bei neuentwicklungen möglich auf cmake statt vs aufzubauen. Finde ich persönlich zumindest angenehmer.
-
@Leon0402 sagte in Webserver (HTTP, REST, websocket, staticfiles):
@SoIntMan Vollstes Verständnis dafür Vlt. ist ja irgendwann mal die Zeit oder zumindest bei neuentwicklungen möglich auf cmake statt vs aufzubauen. Finde ich persönlich zumindest angenehmer.
Servus Leon, ich habe mir mal Gedanken gemacht, um zumindest eine Zwischenlösung ohne Abhängigkeiten zu Boost libs zu haben.
Habe die asio (standalone) header-lib und die crow-header lib in VS includes verweise eingebunden, und konnte jetzt auch direkt builden, ohne was umzubiegen. So könnte ich das ganze später auch auf Linux (mit CMake) bauen..
Ja CMake neckt mich schon.. und es gibt ja sogar ein CMake Projekt template in VS. Naja ich bin da noch alte Schule;)EDIT: Und ja ich verwende den VS RemoteDebugger zusammen mit VS Studio, weiß nicht ob das alles mit der CMake Variante funktioniert:)