websocket

move sending broadcasts back to it's own thread
cause it can lock the even loop
This commit is contained in:
2024-08-28 19:10:44 +02:00
parent 733858af7a
commit 8efa935754
2 changed files with 5 additions and 14 deletions
+5 -12
View File
@@ -117,15 +117,6 @@ void Websocket::process_messages()
m_server.send(a.hdl, response, websocketpp::frame::opcode::TEXT); m_server.send(a.hdl, response, websocketpp::frame::opcode::TEXT);
} }
break; break;
case BROADCAST:
{
std::lock_guard<std::mutex> guard(m_connection_lock);
for (auto it : m_connections)
{
m_server.send(it, a.payload, websocketpp::frame::opcode::TEXT);
}
}
break;
default: default:
break; break;
} }
@@ -143,9 +134,11 @@ void Websocket::process_broadcast()
continue; continue;
} }
{ {
std::lock_guard<std::mutex> guard(m_action_lock); std::lock_guard<std::mutex> guard(m_connection_lock);
m_actions.push(action(BROADCAST, update)); for (auto it : m_connections)
{
m_server.send(it, update, websocketpp::frame::opcode::TEXT);
}
} }
m_action_cond.notify_one();
} }
} }
-2
View File
@@ -27,12 +27,10 @@ struct action {
action(action_type t, websocketpp::connection_hdl h) : type(t), hdl(h) {} action(action_type t, websocketpp::connection_hdl h) : type(t), hdl(h) {}
action(action_type t, websocketpp::connection_hdl h, Server::message_ptr m) action(action_type t, websocketpp::connection_hdl h, Server::message_ptr m)
: type(t), hdl(h), msg(m) {} : type(t), hdl(h), msg(m) {}
action(action_type t, std::string p) : type(t), payload(p) {}
action_type type; action_type type;
websocketpp::connection_hdl hdl; websocketpp::connection_hdl hdl;
Server::message_ptr msg; Server::message_ptr msg;
std::string payload;
}; };
class Websocket class Websocket