From a1dd6b362496ea09fc415ee21cc56f19929c4a90 Mon Sep 17 00:00:00 2001 From: Sven Carstensen Date: Wed, 27 Mar 2024 16:01:23 +0100 Subject: [PATCH] Fehler Merge behoben Kompression von Nachrichten eingebaut --- lib/content_views/assigned_jobs_page.dart | 2 +- lib/content_views/main_page.dart | 2 +- lib/content_views/messages_page.dart | 2 +- lib/content_views/task_list_page.dart | 4 ++-- lib/popups/accept_jobs_popup.dart | 2 +- lib/tools/mqtt_core.dart | 24 ++++++++++++----------- 6 files changed, 19 insertions(+), 17 deletions(-) diff --git a/lib/content_views/assigned_jobs_page.dart b/lib/content_views/assigned_jobs_page.dart index 4ff6be0..e2f2cd3 100644 --- a/lib/content_views/assigned_jobs_page.dart +++ b/lib/content_views/assigned_jobs_page.dart @@ -200,7 +200,7 @@ class _AssignedJobsPageState extends State { message.track.pos!.long = currentPosition != null ? currentPosition.longitude : 0.0; message.track.pos!.acc = currentPosition != null ? currentPosition.accuracy.toInt() : 0; - MqttCore.instance.publishText("reaction", jsonEncode(message.toJson())); + MqttCore.instance.publishMessage("reaction", jsonEncode(message.toJson())); await MyApp.isarInstance.writeTxn(() async { await MyApp.isarInstance.jobs.delete(job.id); diff --git a/lib/content_views/main_page.dart b/lib/content_views/main_page.dart index 1129f9e..af274ed 100644 --- a/lib/content_views/main_page.dart +++ b/lib/content_views/main_page.dart @@ -381,6 +381,6 @@ class _MainPageState extends State { logoutMessage.pos!.acc = position.accuracy.toInt(); } - MqttCore.instance.publishText("logout", jsonEncode(logoutMessage.toJson())); + MqttCore.instance.publishMessage("logout", jsonEncode(logoutMessage.toJson())); } } diff --git a/lib/content_views/messages_page.dart b/lib/content_views/messages_page.dart index 1c1f0af..d08a2cf 100644 --- a/lib/content_views/messages_page.dart +++ b/lib/content_views/messages_page.dart @@ -109,7 +109,7 @@ class _MessagesPageState extends State { await MyApp.isarInstance.messages.put(message.mssg); }); - MqttCore.instance.publishText('set_location', jsonEncode(message.toJson())); + MqttCore.instance.publishMessage('set_location', jsonEncode(message.toJson())); _messages.insert(0, types.TextMessage( author: _user, diff --git a/lib/content_views/task_list_page.dart b/lib/content_views/task_list_page.dart index 085ff8e..21a954e 100644 --- a/lib/content_views/task_list_page.dart +++ b/lib/content_views/task_list_page.dart @@ -444,7 +444,7 @@ class _TaskListPageState extends State { message.task.pos!.long = position.longitude; } - MqttCore.instance.publishText("fin_task", jsonEncode(message.toJson())); + MqttCore.instance.publishMessage("fin_task", jsonEncode(message.toJson())); } FinTourTask _createAnswerHeader(TaskInfo taskInfo) { @@ -486,7 +486,7 @@ class _TaskListPageState extends State { } } - MqttCore.instance.publishText("fin_tour", jsonEncode(message.toJson())); + MqttCore.instance.publishMessage("fin_tour", jsonEncode(message.toJson())); widget.tour.state = Constants.stateFinishedNotConfirmed; await MyApp.isarInstance.writeTxn(() async { diff --git a/lib/popups/accept_jobs_popup.dart b/lib/popups/accept_jobs_popup.dart index 85244ad..04709fd 100644 --- a/lib/popups/accept_jobs_popup.dart +++ b/lib/popups/accept_jobs_popup.dart @@ -217,7 +217,7 @@ _sendAnswer(Job job, int item) async { message.track.pos!.long = currentPosition != null ? currentPosition.longitude : 0.0; message.track.pos!.acc = currentPosition != null ? currentPosition.accuracy.toInt() : 0; - MqttCore.instance.publishText("reaction", jsonEncode(message.toJson())); + MqttCore.instance.publishMessage("reaction", jsonEncode(message.toJson())); await MyApp.isarInstance.writeTxn(() async{ await MyApp.isarInstance.jobs.delete(job.id); diff --git a/lib/tools/mqtt_core.dart b/lib/tools/mqtt_core.dart index d6195da..2463a64 100644 --- a/lib/tools/mqtt_core.dart +++ b/lib/tools/mqtt_core.dart @@ -138,15 +138,15 @@ class MqttCore { Util.logInfo("binary message send to $topic"); } - publishText(String topic, String text) { + publishMessage(String topic, String text) { var buffer = Uint8Buffer(); - buffer.addAll(utf8.encode(text)); + buffer.addAll(GZipEncoder().encode(const Utf8Encoder().convert(text)) as Iterable); - var fullTopic = "$_toServerTopic$topic/$_clientId"; + var messageTopic = "$_toServerTopic$topic/$_clientId"; - _mqttClient.publishMessage(fullTopic, MqttQos.exactlyOnce, buffer); + _mqttClient.publishMessage(messageTopic, MqttQos.exactlyOnce, buffer); - Util.logInfo("message\n$text\nsend to $fullTopic"); + Util.logInfo("message\n$text\nsend to $messageTopic"); } void _setupSubscriptions() async { @@ -158,7 +158,9 @@ class MqttCore { final MqttPublishMessage message = mqttMessage.payload as MqttPublishMessage; if (message.variableHeader!.topicName.endsWith(_clientId)) { - String payload = utf8.decode(MqttPublishPayload.bytesToStringAsString(message.payload.message).codeUnits); + var messageBytes = message.payload.message; + String payload = utf8.decode(GZipDecoder().decodeBytes(messageBytes)); + var topicArray = message.variableHeader?.topicName; var topicArraySplited = topicArray!.split("/"); var topic = topicArraySplited[3]; @@ -406,7 +408,7 @@ class MqttCore { var startSessionMessage = StartSessionMessage(); var jsonMap = startSessionMessage.toJson(); var json = jsonEncode(jsonMap); - publishText("session", json); + publishMessage("session", json); } _sendSyncMessage() async @@ -425,7 +427,7 @@ class MqttCore { answer.sync.jobs.add(syncJob); } - MqttCore.instance.publishText("sync_request_response", jsonEncode(answer.toJson())); + MqttCore.instance.publishMessage("sync_request_response", jsonEncode(answer.toJson())); } void _startTrackTimer() { @@ -439,7 +441,7 @@ class MqttCore { trackMessage.pos!.long = position.longitude; trackMessage.pos!.acc = position.accuracy.toInt(); - publishText("track", jsonEncode(trackMessage.toJson())); + publishMessage("track", jsonEncode(trackMessage.toJson())); } }); } @@ -466,7 +468,7 @@ class MqttCore { if (enqueuedMessages.isNotEmpty) { for (var enqueuedMessage in enqueuedMessages) { try { - publishText(enqueuedMessage.topic, enqueuedMessage.payload); + publishMessage(enqueuedMessage.topic, enqueuedMessage.payload); await MyApp.isarInstance.writeTxn(() async { await MyApp.isarInstance.enqueuedMessages.delete(enqueuedMessage.id); @@ -486,6 +488,6 @@ class MqttCore { message.received.ver = job.ver; message.received.utc = DateTime.now().millisecondsSinceEpoch; - MqttCore.instance.publishText('job', jsonEncode(message.toJson())); + MqttCore.instance.publishMessage('job', jsonEncode(message.toJson())); } }