Add Code for BroadcastWebSocketMessage

This commit is contained in:
Juliane Holzt 2019-07-22 01:05:21 +02:00
parent b4857e2c79
commit 76d8b688fd
No known key found for this signature in database
GPG Key ID: 590AE197EF123736
4 changed files with 46 additions and 3 deletions

View File

@ -49,6 +49,9 @@ public:
const char* GetRecordingTimecode();
obs_data_t* GetStats();
void broadcastUpdate(const char* updateType,
obs_data_t* additionalFields);
bool HeartbeatIsActive;
private slots:
@ -70,9 +73,6 @@ private:
uint64_t _lastBytesSent;
uint64_t _lastBytesSentTime;
void broadcastUpdate(const char* updateType,
obs_data_t* additionalFields);
void OnSceneChange();
void OnSceneListChange();
void OnSceneCollectionChange();

View File

@ -36,6 +36,8 @@ QHash<QString, HandlerResponse(*)(WSRequestHandler*)> WSRequestHandler::messageM
{ "SetFilenameFormatting", WSRequestHandler::HandleSetFilenameFormatting },
{ "GetFilenameFormatting", WSRequestHandler::HandleGetFilenameFormatting },
{ "BroadcastWebSocketMessage", WSRequestHandler::HandleBroadcastWebSocketMessage },
{ "SetCurrentScene", WSRequestHandler::HandleSetCurrentScene },
{ "GetCurrentScene", WSRequestHandler::HandleGetCurrentScene },
{ "GetSceneList", WSRequestHandler::HandleGetSceneList },

View File

@ -74,6 +74,8 @@ class WSRequestHandler : public QObject {
static HandlerResponse HandleSetFilenameFormatting(WSRequestHandler* req);
static HandlerResponse HandleGetFilenameFormatting(WSRequestHandler* req);
static HandlerResponse HandleBroadcastWebSocketMessage(WSRequestHandler* req);
static HandlerResponse HandleSetCurrentScene(WSRequestHandler* req);
static HandlerResponse HandleGetCurrentScene(WSRequestHandler* req);
static HandlerResponse HandleGetSceneList(WSRequestHandler* req);

View File

@ -231,6 +231,45 @@ HandlerResponse WSRequestHandler::HandleGetStats(WSRequestHandler* req) {
return req->SendOKResponse(response);
}
/**
* Broadcast some Data (String) to all connected Websocket-Clients
*
* @param {String} `realm` Some Identifier to be choosen by the client
* @param {String} `data` User-defined data String
*
* @api requests
* @name Authenticate
* @category general
* @since 0.3
*/
HandlerResponse WSRequestHandler::HandleBroadcastWebSocketMessage(WSRequestHandler* req) {
if (!req->hasField("realm") || !req->hasField("data")) {
return req->SendErrorResponse("missing request parameters");
}
QString realm = obs_data_get_string(req->data, "realm");
QString data = obs_data_get_string(req->data, "data");
if (realm.isEmpty()) {
return req->SendErrorResponse("realm not specified!");
}
if (data.isEmpty()) {
return req->SendErrorResponse("data not specified!");
}
auto events = GetEventsSystem();
OBSDataAutoRelease broadcastData = obs_data_create();
obs_data_set_string(broadcastData, "realm", realm.toUtf8().constData());
obs_data_set_string(broadcastData, "data", data.toUtf8().constData());
events->broadcastUpdate("BroadcastWebSocketMessage", broadcastData);
return req->SendOKResponse();
}
/**
* Get basic OBS video information
*