Einführung in den Strawberry Communication Standard
Dies sollte dir eine allgemeine Vorstellung davon geben, worum es bei dem Strawberry Communication Standard geht
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 Features | stbcv1 | stbcv2 | stbcv2.1 | stbcv3 |
---|---|---|---|---|
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!
stbmv2
). Hier kannst du mehr darüber erfahrenDie 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
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