diff --git a/src/app.h b/src/app.h index 883edc0..62993a3 100644 --- a/src/app.h +++ b/src/app.h @@ -16,6 +16,7 @@ using namespace websockets; struct App{ std::vector people_online; + bool peeps{true}; libwebsocket * uberclient{nullptr}; int peopleuid{0}; int balluid{0}; @@ -85,10 +86,12 @@ struct App{ void login(User& user){ user.index = peopleuid++; people_online.push_back(&user); + peeps = true; } void logout(User& user){ people_online.erase(std::remove(people_online.begin(), people_online.end(), &user), people_online.end()); + peeps = true; } void update(){ diff --git a/src/main.cpp b/src/main.cpp index 742ad61..1e995ea 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -83,6 +83,19 @@ websockets::TestProtocol uberclient_protocol{ }, // write (will always come after receive) [](Empty& user, basic_websocket_info) -> std::string{ + if(app->peeps){ + app->peeps = false; + std::string str; + for(auto & u : app->people_online){ + str += u->name; + if(u != app->people_online.back()) + str += ", "; + } + js::Object ret; + ret["command"] = "peeps"; + ret["data"] = to_json(str); + return write_json(ret); + } if(!app->offline_sim.lines_to_remove.empty()){ js::Object ret; ret["command"] = "remove lines"; @@ -118,7 +131,7 @@ websockets::TestProtocol uberclient_protocol{ } } - if(!app->offline_sim.lines_to_add.empty() || !app->offline_sim.lines_to_remove.empty()){ + if(app->peeps || !app->offline_sim.lines_to_add.empty() || !app->offline_sim.lines_to_remove.empty()){ request_write(binfo); } }