]> gitweb.ps.run Git - autorec/blobdiff - src/ws.h
Makefile, auto ico
[autorec] / src / ws.h
index ecc88b3b042c4db79be2d32143e852980ab49fe7..4bebc1fb22bb0481f33a27a0a0d3bc68dc76e01e 100644 (file)
--- a/src/ws.h
+++ b/src/ws.h
@@ -4,6 +4,7 @@
 using json = nlohmann::json;\r
 \r
 #include <string>\r
+#include <functional>\r
 \r
 namespace ws\r
 {\r
@@ -12,10 +13,14 @@ namespace ws
 \r
   bool done = false;\r
 \r
+  std::function<void()> onConnect;\r
+\r
   static void cb(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {\r
     if (ev == MG_EV_WS_OPEN) {\r
+      puts("Open");\r
     } else if (ev == MG_EV_WS_MSG) {\r
       struct mg_ws_message *wm = (struct mg_ws_message *) ev_data;\r
+      printf("Msg: %.*s\n", (int)wm->data.len, wm->data.ptr);\r
       std::string jsonStr(wm->data.ptr, wm->data.len);\r
       auto msg = json::parse(jsonStr);\r
       int op = msg["op"].get<int>();\r
@@ -32,16 +37,18 @@ namespace ws
       }\r
       else if (op == 2)\r
       {\r
-        MessageBoxA(NULL, "hura", "connected", MB_OK);\r
+        puts("Connected");\r
+        if (onConnect)\r
+          onConnect();\r
       }\r
     }\r
 \r
     if (ev == MG_EV_ERROR) {\r
-      MessageBoxA(NULL, "", "Error", MB_OK);\r
+      printf("Error: %s\n", (char*)ev_data);\r
       done = true;\r
     }\r
     if (ev == MG_EV_CLOSE) {\r
-      MessageBoxA(NULL, "", "Close", MB_OK);\r
+      puts("Close");\r
       done = true;\r
     }\r
   }\r
@@ -68,7 +75,7 @@ namespace ws
                       { "d",\r
                         {\r
                           { "requestType", requestType },\r
-                          { "requestId", std::to_string(NULL).c_str() }\r
+                          { "requestId", std::to_string(time(nullptr)).c_str() }\r
                         } } };\r
     auto requestStr = request.dump();\r
     mg_ws_send(c, requestStr.c_str(), requestStr.size(), WEBSOCKET_OP_TEXT);\r