mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
server: handle requests in a separate thread
This commit is contained in:
parent
1ec69cbc0d
commit
2d84ad8963
@ -166,24 +166,26 @@ void WSServer::onMessage(connection_hdl hdl, server::message_ptr message)
|
||||
return;
|
||||
}
|
||||
|
||||
std::string payload = message->get_payload();
|
||||
QtConcurrent::run([=]() {
|
||||
std::string payload = message->get_payload();
|
||||
|
||||
QMutexLocker locker(&_clMutex);
|
||||
QVariantHash connProperties = _connectionProperties[hdl];
|
||||
locker.unlock();
|
||||
QMutexLocker locker(&_clMutex);
|
||||
QVariantHash connProperties = _connectionProperties[hdl];
|
||||
locker.unlock();
|
||||
|
||||
WSRequestHandler handler(connProperties);
|
||||
std::string response = handler.processIncomingMessage(payload);
|
||||
WSRequestHandler handler(connProperties);
|
||||
std::string response = handler.processIncomingMessage(payload);
|
||||
|
||||
_server.send(hdl, response, websocketpp::frame::opcode::text);
|
||||
_server.send(hdl, response, websocketpp::frame::opcode::text);
|
||||
|
||||
locker.relock();
|
||||
// In multithreaded processing this would be problematic to put back
|
||||
// a copy of the connection properties, because there might conflicts
|
||||
// between several simultaneous handlers.
|
||||
// In our case, it's fine because all messages are processed in one thread.
|
||||
_connectionProperties[hdl] = connProperties;
|
||||
locker.unlock();
|
||||
locker.relock();
|
||||
// In multithreaded processing this would be problematic to put back
|
||||
// a copy of the connection properties, because there might conflicts
|
||||
// between several simultaneous handlers.
|
||||
// In our case, it's fine because all messages are processed in one thread.
|
||||
_connectionProperties[hdl] = connProperties;
|
||||
locker.unlock();
|
||||
});
|
||||
}
|
||||
|
||||
void WSServer::onClose(connection_hdl hdl)
|
||||
|
Loading…
x
Reference in New Issue
Block a user