Was ist das?

Der Strawberry Communication Standard (Strawberry’s Kommunikationsstandard) (kurz stbm, Strawberry Communication Standard) ist ein Kommunikationstandard für unsere Projekte. Das heißt das alle unsere Projekte, die was mit Nachrichtenübertragungen oder ähnliches zu tun haben, dieses System nutzen.

Aktuell haben wir 2 Hauptversionen des Strawberry Communication Standards. Um das alte System vom neuen System zu unterscheiden zu können, führen wir das Strawberry Communication System ein (kurz stbm). Dieses Kommunikationssystem bildet einen Standard für Strawberry Chat und möglicherweise für andere Projekte von Strawberry Foundations.

Versionen des Strawberry Communication Standards

Aktuell planen wir eine Umbennenung der kurzen Version vom Strawberry Communication Standard. Die aktuelle kurze Version ist stbm (Strawberry Communication Standard). Wir planen dies zu stbc umzubennenen um möglicherweise weniger Verwirrung zu verursachen

Strawberry Communication Standard v1

Version 1 (stbmv1/stbcv1) ist eine “Legacy” Version und erhält keine Updates mehr. Diese Version sendete pure Python-Strings über Sockets und der Client empfängt diese ohne vieles entschlüsseln der Daten. Die Daten werden jediglich nur entkodiert.

Strawberry Communication Standard v2

Version 2 (stbmv2/stbcv2) ist eine neue, verbesserte Version unseres Kommunikationssystemes. Diese verwendet JSON, um Nachrichten über den Benutzern zu übertragen. Mit unserem neuen Kommunizierungsstandard können Nutzer nun ihre eigenen Message Builder erstellen und damit selber entscheiden wie eine Nachricht angezeigt sein soll, unabhängig davon wie der Server eigentlich die Nachrichten gesendet hätte.

Strawberry Communication Standard v3

Version 3 (stbcv3) wurde mit dem Rust-rewrite von Strawberry Chat veröffentlicht. Diese Version implementiert das senden von JSON-Daten auf beiden Seiten (Server & Client). Das bedeutet, dass der Client dann auch JSON senden muss. Aufgrund von aktuellen Performanceproblemen steht dies aber noch nicht fest und könnte daher sich noch ändern. Durch die Implementierung von JSON für den Client stehen viele neue Möglichkeiten offen. Dadurch kann der Client spezielle Daten am Server senden und dieser verarbeitet diese. So könnten Commands, die Client-spezifisch sind, am Server verarbeitet werden.

Die Veröffentlichung fand am 19. April 2024 statt. Version 3 ist nicht rückwärtskompatibel.

Unterstützung

Unterstützte Featuresstbcv1stbcv2stbcv2.1stbcv3
Python Strings¹
pure String Transfer²
Kompatiblitätsmodus
JSON Server-to-Client³
JSON Client-to-Server⁴
Msgpack

Datentypen (stbcv2)

Ab stbcv2 verwenden wir neue und eigene JSON-Datentypen. Hier ist ein kleiner überblick von unseren Datentypen

Was? Wieso? Wie?

Du wunderst dich vielleicht und fragst dich was das überhaupt ist? Naja, dies ist wie 2 Socket Instanzen miteinander Kommunizieren. Dies wurde ursprünglich für Strawberry Chat entwickelt um Daten zwischen Server und Client, wie zum Beispiel Nutzername, Badge und Nachrichten zu senden, aber wir haben uns dazu entschieden, ein kleines Tutorial zu geben wie du dieses System auch in deinem Client implementieren kannst!

JSON-Kommunikation (JSON-Communication) ist auch ein anderer Name für unser Strawberry Communication Standard v2 (stbmv2). Hier kannst du mehr darüber erfahren

Die Idee

Das originale Konzept dafür wurde auf unserem Projekteboard auf GitHub GitHub am 10. November 2023 gepostet. Beachte das dies aktuell nur in Deutsch zur Verfügung steht.

Beispielcode

Dies ist ein sehr einfaches Beispiel für JSON-Kommunikation welches in Strawberry Chat verwendet wird

Unterstützte Versionen in Strawberry Chat

Dies gilt nur für Strawberry Chat, kein anderes Programm

Siehe Tabelle

v1.8.0 - v1.8.2 v1.8.3 v1.9.0
Standard <=2.4.0
Standard v2.5.0
Standard >=v2.5.1✅ (CM)✅ (CM)✅ (CM)
Lite <=v1.0.1
Lite >=v1.1.0
Nano <=v1.0.1
Nano >=v1.1.0
Berryjuice-pico

Kompatiblitätsmodus (CM)

Seit Client v2.5.1 haben wir ein Feature hinzugefügt welches Nutzern erlaubt, sich mit alten Servern zu verbinden. Dies heißt Kompatiblitätsmodus. Um den Kompatiblitätsmodus zu aktivieren musst du entweder compatibility_mode: true zu deinem Legacy Servereintrag hinzufügen oder starte den Client mit dem --compatibility-mode Argument