瀏覽代碼

Add WebSocketClient::setHttpRequest getHttpResponse

ithewei 3 年之前
父節點
當前提交
08b076677d
共有 2 個文件被更改,包括 24 次插入2 次删除
  1. 14 2
      examples/websocket_client_test.cpp
  2. 10 0
      http/client/WebSocketClient.h

+ 14 - 2
examples/websocket_client_test.cpp

@@ -20,8 +20,10 @@ public:
 
     int connect(const char* url) {
         // set callbacks
-        onopen = []() {
-            printf("onopen\n");
+        onopen = [this]() {
+            const HttpResponsePtr& resp = getHttpResponse();
+            printf("onopen\n%s\n", resp->body.c_str());
+            // printf("response:\n%s\n", resp->Dump(true, true).c_str());
         };
         onmessage = [this](const std::string& msg) {
             printf("onmessage(type=%s len=%d): %.*s\n", opcode() == WS_OPCODE_TEXT ? "text" : "binary",
@@ -39,6 +41,16 @@ public:
         reconn.delay_policy = 2;
         setReconnect(&reconn);
 
+        /*
+        HttpRequestPtr req = std::make_shared<HttpRequest>();
+        req->method = HTTP_POST;
+        req->headers["Origin"] = "http://example.com";
+        req->json["app_id"] = "123456";
+        req->json["app_secret"] = "abcdefg";
+        printf("request:\n%s\n", req->Dump(true, true).c_str());
+        setHttpRequest(req);
+        */
+
         http_headers headers;
         headers["Origin"] = "http://example.com/";
         return open(url, headers);

+ 10 - 0
http/client/WebSocketClient.h

@@ -39,6 +39,16 @@ public:
         ping_interval = ms;
     }
 
+    // NOTE: call before open
+    void setHttpRequest(const HttpRequestPtr& req) {
+        http_req_ = req;
+    }
+
+    // NOTE: call when onopen
+    const HttpResponsePtr& getHttpResponse() {
+        return http_resp_;
+    }
+
 private:
     enum State {
         CONNECTING,