1 #include "mongoose.h"
\r
4 using json = nlohmann::json;
\r
7 #include <functional>
\r
12 mg_connection *c = nullptr;
\r
16 std::function<void()> onConnect;
\r
18 static void cb(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
\r
19 if (ev == MG_EV_WS_OPEN) {
\r
21 } else if (ev == MG_EV_WS_MSG) {
\r
22 struct mg_ws_message *wm = (struct mg_ws_message *) ev_data;
\r
23 printf("Msg: %.*s\n", (int)wm->data.len, wm->data.ptr);
\r
24 std::string jsonStr(wm->data.ptr, wm->data.len);
\r
25 auto msg = json::parse(jsonStr);
\r
26 int op = msg["op"].get<int>();
\r
35 auto responseStr = response.dump();
\r
36 mg_ws_send(c, responseStr.c_str(), responseStr.size(), WEBSOCKET_OP_TEXT);
\r
46 if (ev == MG_EV_ERROR) {
\r
50 if (ev == MG_EV_CLOSE) {
\r
61 void connect(std::string address)
\r
63 c = mg_ws_connect(&mgr, address.c_str(), cb, nullptr, nullptr);
\r
69 mg_mgr_poll(&mgr, 10);
\r
72 void sendRequest(std::string requestType)
\r
74 json request = { { "op", 6 },
\r
77 { "requestType", requestType },
\r
78 { "requestId", std::to_string(NULL).c_str() }
\r
80 auto requestStr = request.dump();
\r
81 mg_ws_send(c, requestStr.c_str(), requestStr.size(), WEBSOCKET_OP_TEXT);
\r