]> gitweb.ps.run Git - autorec/blobdiff - src/ws.h
Why didnt I commit these
[autorec] / src / ws.h
index 058f69b707f776d84e95cdaa11c2128697909f1b..d3acb2763f99fe5753a005999dea650c562c2ba3 100644 (file)
--- a/src/ws.h
+++ b/src/ws.h
@@ -11,13 +11,16 @@ namespace ws
   mg_mgr mgr;\r
   mg_connection *c = nullptr;\r
 \r
-  bool done = false;\r
+  bool isConnected = false;\r
 \r
   std::function<void()> onConnect;\r
+  std::function<void()> onClose;\r
+  std::function<void()> onError;\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
+      isConnected = true;\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
@@ -44,12 +47,16 @@ namespace ws
     }\r
 \r
     if (ev == MG_EV_ERROR) {\r
-      puts("Error");\r
-      done = true;\r
+      printf("Error: %s\n", (char*)ev_data);\r
+      isConnected = false;\r
+      if (onError)\r
+          onError();\r
     }\r
     if (ev == MG_EV_CLOSE) {\r
       puts("Close");\r
-      done = true;\r
+      isConnected = false;\r
+      if (onClose)\r
+        onClose();\r
     }\r
   }\r
 \r
@@ -65,7 +72,7 @@ namespace ws
 \r
   void update()\r
   {\r
-    if (c && !done)\r
+    if (c)\r
       mg_mgr_poll(&mgr, 10);\r
   }\r
 \r
@@ -75,7 +82,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