mirror of
https://github.com/CrowCpp/Crow.git
synced 2024-06-07 21:10:44 +00:00
23648445f3
Added mkdocs documentation. Altered doxygen generation (doxyfile and shell script) to work with mkdocs. Removed the whole html folder thing for docs, now the files reside in the root gh-pages branch. New readme.
1.7 KiB
1.7 KiB
Websockets are a way of connecting a client and a server without the request response nature of HTTP.
To create a websocket in Crow, you need a websocket route.
A websocket route differs from a normal route quite a bit. While it uses the same CROW_ROUTE(app, "/url")
macro, that's about where the similarities end.
A websocket route follows the macro with .websocket()
which is then followed by a series of methods (with handlers inside) for each event. These are:
#!cpp onopen([&](crow::websocket::connection& conn){handler code goes here})
#!cpp onaccept([&](const crow::request&){handler code goes here})
(This handler has to return bool)#!cpp onmessage([&](crow::websocket::connection& conn, const std::string message, bool is_binary){handler code goes here})
#!cpp onclose([&](crow::websocket::connection& conn, const std::string reason){handler code goes here})
#!cpp onerror([&](crow::websocket::connection& conn){handler code goes here})
These event methods and their handlers can be chained. The full Route should look similar to this:
CROW_ROUTE(app, "/ws")
.websocket()
.onopen([&](crow::websocket::connection& conn){
do_something();
})
.onclose([&](crow::websocket::connection& conn, const std::string& reason){
do_something();
})
.onmessage([&](crow::websocket::connection& /*conn*/, const std::string& data, bool is_binary){
if (is_binary)
do_something(data);
else
do_something_else(data);
});
For more info go here.