| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #include "HttpServer.h"
- #include "GlobalVar.h"
- #include <iostream>
- #include <json/json.h>
- #pragma comment(lib,"jsoncpp_static.lib")
- void HttpServer::run()
- {
- struct mg_mgr mgr; // Event manager
- mg_log_set("2"); // Set to 3 to enable debug
- mg_mgr_init(&mgr); // Initialise event manager
- mg_http_listen(&mgr, s_http_addr, fn, NULL); // Create HTTP listener
- mg_http_listen(&mgr, s_https_addr, fn, (void *)1); // HTTPS listener
- std::cout << "HttpServerÆô¶¯..." << s_http_addr << std::endl;
- std::cout << "HttpServersÆô¶¯..." << s_https_addr << std::endl;
- for (;;) mg_mgr_poll(&mgr, 1000); // Infinite event loop
- mg_mgr_free(&mgr);
- }
- void HttpServer::run(int httpPort, int httpsPort)
- {
- std::stringstream http;
- http << "http://0.0.0.0:" << httpPort;
- std::stringstream https;
- https << "http://0.0.0.0:" << httpsPort;
- struct mg_mgr mgr; // Event manager
- mg_log_set("2"); // Set to 3 to enable debug
- mg_mgr_init(&mgr); // Initialise event manager
- mg_http_listen(&mgr, http.str().c_str(), fn, NULL); // Create HTTP listener
- mg_http_listen(&mgr, https.str().c_str(), fn, (void *)1); // HTTPS listener
- std::cout << "HttpServerÆô¶¯..." << http.str() << std::endl;
- std::cout << "HttpServersÆô¶¯..." << https.str() << std::endl;
- for (;;) mg_mgr_poll(&mgr, 1000); // Infinite event loop
- mg_mgr_free(&mgr);
- }
- void HttpServer::fn(mg_connection * c, int ev, void * ev_data, void * fn_data)
- {
- if (ev == MG_EV_ACCEPT && fn_data != NULL) {
- struct mg_tls_opts opts;
- opts.cert = "server.pem"; // Certificate PEM file
- opts.certkey = "server.pem"; // This pem contains both cert and key
- mg_tls_init(c, &opts);
- }
- else if (ev == MG_EV_HTTP_MSG) {
- struct mg_http_message *hm = (struct mg_http_message *) ev_data;
- if (mg_http_match_uri(hm, "/api/f1")) {
- mg_http_reply(c, 200, "", "{\"result\": %d}\n", 123); // Serve REST
- }
- else if (mg_http_match_uri(hm, "/api/f2/*")) {
- mg_http_reply(c, 200, "", "{\"result\": \"%.*s\"}\n", (int)hm->uri.len,
- hm->uri.ptr);
- }
- else if (mg_http_match_uri(hm, "/api/getGroupTalkingNum")) {
- auto groupTalkingNum = GlobalVar::GetInstance()->getGroupTalkingNum();
- Json::Value root;
- Json::StreamWriterBuilder builder;
- auto it = groupTalkingNum.begin();
- while (it != groupTalkingNum.end())
- {
- root[it->first] = it->second;
- ++it;
- }
- std::string str = Json::writeString(builder, root);
- if (str == "" || str == "null" || str.empty())
- str = "{}";
- mg_http_reply(c, 200, "", "%s\n", str.c_str());
- std::stringstream ss;
- ss << GetCurTime() << " " << "" << "\n" << str << std::endl;
- print(ss.str());
- }
- else {
- /*struct mg_http_serve_opts opts = { .root_dir = s_root_dir };*/
- /*struct mg_http_serve_opts opts;
- opts.root_dir = s_root_dir;
- mg_http_serve_dir(c, hm, &opts);*/
- }
- }
- (void)fn_data;
- }
|