From 3a63dfbe7b5f857004a078910f989ab653bf1d5a Mon Sep 17 00:00:00 2001 From: talksik Date: Sat, 27 Jan 2024 12:49:49 -0800 Subject: [PATCH] working on broadcast --- .../index/Main.cpp.3A7DAD75EE1835F0.idx | Bin 1514 -> 2222 bytes server/src/Main.cpp | 96 ++++++++++-------- 2 files changed, 52 insertions(+), 44 deletions(-) diff --git a/server/.cache/clangd/index/Main.cpp.3A7DAD75EE1835F0.idx b/server/.cache/clangd/index/Main.cpp.3A7DAD75EE1835F0.idx index d0f1da011c6de464822ae77c8a71e2bf02567999..7b3db11ebd1f35a7aae2f78269822657b6c17d93 100644 GIT binary patch literal 2222 zcmZvec~DbF9LHZmNO;L3FTn?oBY;2-jz9=1#vC;!+)@sqjapE-w2ELk%HT0rv07>o zYYUcgsc3^2APiV*McZ*k#0Z|FqGRzu5mdxduUfH7>b~TUzM1Uo_p`tK?Qeg-efu&m zIwHbohamdQ=;EBL!ZZegAP(SHP?*2mn}#4wbOb4`tJ-c_VI#-FpHEA*-Bu%Qx68a3 zT3N*R-FqP`Q9V-beAD%xsP!lNrnJYfnQpIBUXQqz(=u-Oswz%rn@qVOwDF3rHK${9 zqe6BylV5Fl;+JuE{_@z1jf_VzrX|v9Zh7g~bsb?QW7W~)qn8w&gTc=Ums4@-H8HNA z2~`Q*X!D*6olQ^HDpz^bx+wcS0u=S9+>aayPg#o}eR)!hZgr3R?YjfX^c%_vQw_7k z(Gb{GA6C23xL=<-?7GP@Yl1lc!>M$dr(os^R$phtSduD`_bz)_dQ+vkU;ZNPMG6_W z?9(^<=B%2xdesxAaK!ISFBzUx5j(L(H8K2S(Bk8oxQ4O)r!NomEUNhEPBy~(i|iO| z8`K|JKal^hwqSKmdM(IUFnPuK-e~>;3~@pb+>zmEXKuiV`RTcq>!6DW%fS$5dj#j& za&dD5hr15hG^w`D`G!u%-XomFW=&SY{J6T^8VWvqZa0(81miNhxB~;j`6%C>+9pn-q&+kO4yLMw7G-cZ zctQ2&kgi#FqsbF2KAV{B2Jy~9)qMV@&3*vSBxX|hSnK$3QI$>#utXvWh1N^&2~2m# zwQ{gAz7yXWMp2@uLLM-cN?;vHL{b||eY@kfu?5uu?2UU1pp)a>uhvwaKl35LGD1cz zsW=xR3=Jmw=7-u^V7`}I{;pY zF2tadtz%Q&xLSU-4Ths`sE9gtI9J1sgmW=m;3EixC)VIUJtOa+a2N2zlk=3&2oBq@ z%?BASfZ-xciS=C&a(4=nS3j?YAV3K z8eR96JBPY}wSNC1XE}F4!!inyW9a2!0|*p6-ntP&F8;%uj>U# zL+w!)7zv2WnIp6)u8gaKr2&QV;mIsY;3)8dV~rcBIS@zNI_G(#^=p UTsiqIv}3dBHnvO-gGEFC1uqTz7XSbN literal 1514 zcmY+E4@?_X9LKNiwe-pzSK!K(zs=SbIL69Kun5#^$KL+pH90aLuYd*32&^HNq{Zg4ld9fv; zR{HP)dDRk)*G^PMyIZ73_}bZp_FLx~e%2&Ne|^*>!|dFyT^GwdN`<_^+Rs~hKV4)C zuF369caq~Ga!XND!S%ev&f{}s@-xyLQh9VZ`&wJR-L-Pz&yKf?ALI#!ZHq>pKp8Xj z;#|*3+g!}@!9i>5pmi*^_ExOKxco-LzU2Lf=doA*`LMKex)N>MsVm>^yn8vyDGNbY_I!zQ@_#M z;<((kKUI{L>*6rw0Y@}}-Sg&}^5QhG{{(tWdUxKGk0W9PA$TZHxZZ)0^%mRoqfP8s zbPEt13=92*()A7wn+yldso+R$b2>d~Ddlr;LQScqFzKlL%|=_=UJ_tt2a^f0t6(Cr z;}{vl#R)#fCm;rb3 z)H-t(z+qIF61q=GGH%TH-OB-3k}Ao8xWdnVJg2>IAHd;MIO~SP9MS*I*IQZXe&jb_ z1Kgoh=w|3LpTqkmyU&~eIFJmCg!p_AjSz*oNDWTDk(0>Mf?&ms}5o?6CTXQjWKii%=?{T;4t`Dw-E z2*4Uj!zLM;ZGGqTJ@pS9lwdSWDx4|k)z+xD(EDScQWfcn42Z!I?owq#^@YB<+WGv< z1c;?@N(}K?<4$x(R{hjkN`~1Eu^~l#fEGmjCPWDtEo0Y(5(--3qg1rYN5#|eJ}QY$ z@=?ijvX9czS|7Ddye$w;EFP8r;_bku!OlsHWUFLSRS|M+>tEAgnIua3L3i;;)vUu~ znFH=PDvmuTP1NG>Awkh17bW-se0Hy3iyIlX9tV0xUKV-YT>-IDN-BpbQxJESQ%tP_ zEGdwfAT}9{MQito*;HbduYHhf-Fo8?=fkd!%cgH=xB(;*05O7;l$RR8g@g!2A})_F J@JIbP*uO~$8#Dj_ diff --git a/server/src/Main.cpp b/server/src/Main.cpp index bc527a1..4d8da15 100644 --- a/server/src/Main.cpp +++ b/server/src/Main.cpp @@ -36,51 +36,59 @@ int main() .cert_file_name = "misc/cert.pem", .passphrase = "1234"}) .ws( - "/*", {/* Settings */ - .compression = uWS::CompressOptions(uWS::DEDICATED_COMPRESSOR_4KB | uWS::DEDICATED_DECOMPRESSOR), - .maxPayloadLength = 100 * 1024 * 1024, - .idleTimeout = 16, - .maxBackpressure = 100 * 1024 * 1024, - .closeOnBackpressureLimit = false, - .resetIdleTimeoutOnSend = false, - .sendPingsAutomatically = true, - /* Handlers */ - .upgrade = nullptr, - .open = - [](uWS::WebSocket *ws) { - auto user_data = ws->getUserData(); - user_data->created_at = DateTime::now(); + "/*", + {/* Settings */ + .compression = uWS::CompressOptions(uWS::DEDICATED_COMPRESSOR_4KB | uWS::DEDICATED_DECOMPRESSOR), + .maxPayloadLength = 100 * 1024 * 1024, + .idleTimeout = 16, + .maxBackpressure = 100 * 1024 * 1024, + .closeOnBackpressureLimit = false, + .resetIdleTimeoutOnSend = false, + .sendPingsAutomatically = true, + /* Handlers */ + .upgrade = nullptr, + .open = + [](uWS::WebSocket *ws) { + auto user_data = ws->getUserData(); + user_data->created_at = DateTime::now(); - DateTime::outputTime("Client connected at ", user_data->created_at); - }, - .message = - [](auto *ws, std::string_view message, uWS::OpCode opCode) { - /* This is the opposite of what you probably want; compress if message is LARGER than 16 kb - * the reason we do the opposite here; compress if SMALLER than 16 kb is to allow for - * benchmarking of large message sending without compression */ - std::cout << "Message received: " << message << std::endl; - ws->send(message, opCode, message.length() < 16 * 1024); - }, - .dropped = - [](auto * /*ws*/, std::string_view /*message*/, uWS::OpCode /*opCode*/) { - /* A message was dropped due to set maxBackpressure and closeOnBackpressureLimit limit */ - }, - .drain = - [](auto * /*ws*/) { - /* Check ws->getBufferedAmount() here */ - }, - .ping = - [](auto * /*ws*/, std::string_view) { - /* Not implemented yet */ - }, - .pong = - [](auto * /*ws*/, std::string_view) { - /* Not implemented yet */ - }, - .close = - [](auto * /*ws*/, int /*code*/, std::string_view /*message*/) { - /* You may access ws->getUserData() here */ - }}) + DateTime::outputTime("Client connected at ", user_data->created_at); + if (!ws->subscribe("*")) + { + std::cout << "Failed to subscribe to * channel\n"; + ws->close(); + } + }, + .message = + [](uWS::WebSocket *ws, std::string_view message, uWS::OpCode opCode) { + /* This is the opposite of what you probably want; compress if message is LARGER than 16 kb + * the reason we do the opposite here; compress if SMALLER than 16 kb is to allow for + * benchmarking of large message sending without compression */ + std::cout << "Message received: " << message << std::endl; + ws->send(message, opCode, false); + ws->publish("*", message, opCode, false); + }, + .dropped = + [](auto * /*ws*/, std::string_view /*message*/, uWS::OpCode /*opCode*/) { + /* A message was dropped due to set maxBackpressure and closeOnBackpressureLimit limit */ + }, + .drain = + [](auto * /*ws*/) { + /* Check ws->getBufferedAmount() here */ + }, + .ping = + [](auto * /*ws*/, std::string_view) { + /* Not implemented yet */ + }, + .pong = + [](auto * /*ws*/, std::string_view) { + /* Not implemented yet */ + }, + .close = + [](auto * /*ws*/, int /*code*/, std::string_view /*message*/) { + /* You may access ws->getUserData() here */ + std::cout << "Client disconnected\n"; + }}) .listen(9001, [](auto *listen_socket) { if (listen_socket)