Optimize big message publishing, fix unreferenced publishes

This commit is contained in:
root
2021-09-28 23:22:38 +00:00
parent 814a7ee53e
commit 0ede7e5d8e
6 changed files with 68 additions and 17 deletions
+8 -2
View File
@@ -304,9 +304,15 @@ public:
}
/* Publish as sender, does not receive its own messages even if subscribed to relevant topics */
bool success = webSocketContextData->topicTree->publish(webSocketData->subscriber, topic, {std::string(message), opCode, compress});
if (message.length() >= LoopData::CORK_BUFFER_SIZE) {
return webSocketContextData->topicTree->publishBig(webSocketData->subscriber, topic, {message, opCode, compress}, [](Subscriber *s, TopicTreeBigMessage &message) {
auto *ws = (WebSocket<SSL, true, int> *) s->user;
return success;
ws->send(message.message, (OpCode)message.opCode, message.compress);
});
} else {
return webSocketContextData->topicTree->publish(webSocketData->subscriber, topic, {std::string(message), opCode, compress});
}
}
};