Dies sollte dir eine allgemeine Vorstellung davon geben, worum es bei dem Strawberry Communication Standard geht
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.
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
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.
Hinweis
Für diese Version bieten wir keinen weiteren Support an. Die letzte Strawberry Chat Version (v1.8.3) mit diesem Kommunikationssystem erschien am 10. Dezember 2023. Dies war die letzte Legacy Version von Strawberry Chat und wird mit der Veröffentlichung von v1.10 oder v1.11 keinen weiteren Support erhalten.
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 v2.1
Zusätzlich gibt es noch Version 2.1 (stbmv2.1)
für Nachrichten-Proxying, diese Version ist aber aktuell nicht verfügbar.
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ützte Features | stbcv1 | stbcv2 | stbcv2.1 | stbcv3 |
---|---|---|---|---|
Python Strings¹ | ✅ | ✅ | ✅ | ❌ |
pure String Transfer² | ✅ | ❌ | ✅ | ❌ |
Kompatiblitätsmodus | ✅ | ✅ | ✅ | ❌ |
JSON Server-to-Client³ | ❌ | ✅ | ✅ | ✅ |
JSON Client-to-Server⁴ | ❌ | ❌ | ❌ | ✅ |
Msgpack | ❌ | ❌ | ❌ | ✅ |
Python Strings¹
Das Feature Python Strings¹ bedeutet so viel wie “Unterstützung für reine Python-Strings”. Dies sollte in jedem Fall immer “Ja”/”✅” sein, andersfalls können keine Strings verwendet werden.
Die Interne Bezeichnung für Python Strings lautet ps_com
oder feat@ps
pure String Transfer²
Das Feature “pure String Transfer” wird für die erste Version des Strawberry Communication Standards verwendet. Dieses Feature verwendet reine Python Strings zum austausch von Daten und Events.
Die Interne Bezeichnung für pure String Transfer lautet pST_com
oder feat@pst
JSON Server-to-Client³
Das JSON Feature Server-to-Client ist die Weiterentwicklung von pure String Transfer und bietet nun eine kompakte Datenstruktur an, um einfach Daten und Events am Client zu senden. So können auch “leise” Events im Hintergrund passieren
Die Interne Bezeichnung für JSON Server-to-Client lautet json_stc
oder json@stc
JSON Client-to-Server³
Das JSON Feature Client-to-Server ist die Implementierung von JSON für den Server, sodass der Server nun JSON-Daten vom Client annimmt statt pure String Transfer² Daten. Die zweite Version des Strawberry Communication Standards verwendet von Client zum Server weiterhin pure String Transfer, während die dritte Version vermutlich JSON Client-to-Server verwendet.
Die Interne Bezeichnung für JSON Client-to-Server lautet json_cts
oder json@cts
Ab stbcv2 verwenden wir neue und eigene JSON-Datentypen. Hier ist ein kleiner überblick von unseren Datentypen
Nutzernachrichten (user_message)
Nutzernachrichten (user_message
) sind Nachrichten die von einem Nutzer gesendet wurden.
Der Datentyp beinhaltet wichtige Daten, wie z.B. der Nutzername, das Badge, die Rollenfarbe und am wichtigsten, die Nachricht des Nutzers.
Die Struktur könnte sich mit stbcv3 ändern.
Systemnachrichten (system_message)
Systemnachrichten (system_message
) sind Nachrichten die vom System gesendet wurden.
Dort handelt es sich meist um Nachrichten, dass ein neuer Nutzer beigetreten ist, allerdings können Systemnachrichten auch die eingebauten Slash-Commands sein.
Dieser Datentyp ist ziemlich kompakt und sehr klein. Dies könnte sich aber eventuell mit stbcv3 ändern.
Benachrichtigungs-Backend (stbchat_notification)
Benachrichtigungs-Backend (stbchat_notification
) sind interne Nachrichtenevents die vom System gesendet wurden.
Diese Nachricht siehst du nicht, aber führt im Hintergrund ein Prozess aus, nämlich der, um dir eine Desktop-Benachrichtigung zu senden.
Dieser Datentyp ist etwas komplexer. Die Struktur dieses Datentypes könnte sich mit stbcv3 ändern.
Chatdatenübertragungs-Backend (stbchat_backend)
Chatdatenübertragungs-Backend (stbchat_backend
) sind interne Nachrichtenevents die vom System gesendet wurden.
Diese Nachricht siehst du nicht, aber führt im Hintergrund ein Prozess aus. Dieser Prozess kann unterschiedlich sein.
Aktuell sendet stbchat_backend
nur den Nutzernamen an den Client zurück. Der Client kann den Nutzernamen dann für verschiedene Dinge verwenden.
Dieser Datentyp ist aufgrund seiner Neuheit sehr klein. Mit stbcv3 oder vielleicht sogar stbcv2 erhält dieser Datentyp allerdings noch mehr Features und damit eine höhere Bedeutung.
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 erfahrenDas 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.
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 | ✅ | ✅ | ❌ |
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
Dies sollte dir eine allgemeine Vorstellung davon geben, worum es bei dem Strawberry Communication Standard geht
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.
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
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.
Hinweis
Für diese Version bieten wir keinen weiteren Support an. Die letzte Strawberry Chat Version (v1.8.3) mit diesem Kommunikationssystem erschien am 10. Dezember 2023. Dies war die letzte Legacy Version von Strawberry Chat und wird mit der Veröffentlichung von v1.10 oder v1.11 keinen weiteren Support erhalten.
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 v2.1
Zusätzlich gibt es noch Version 2.1 (stbmv2.1)
für Nachrichten-Proxying, diese Version ist aber aktuell nicht verfügbar.
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ützte Features | stbcv1 | stbcv2 | stbcv2.1 | stbcv3 |
---|---|---|---|---|
Python Strings¹ | ✅ | ✅ | ✅ | ❌ |
pure String Transfer² | ✅ | ❌ | ✅ | ❌ |
Kompatiblitätsmodus | ✅ | ✅ | ✅ | ❌ |
JSON Server-to-Client³ | ❌ | ✅ | ✅ | ✅ |
JSON Client-to-Server⁴ | ❌ | ❌ | ❌ | ✅ |
Msgpack | ❌ | ❌ | ❌ | ✅ |
Python Strings¹
Das Feature Python Strings¹ bedeutet so viel wie “Unterstützung für reine Python-Strings”. Dies sollte in jedem Fall immer “Ja”/”✅” sein, andersfalls können keine Strings verwendet werden.
Die Interne Bezeichnung für Python Strings lautet ps_com
oder feat@ps
pure String Transfer²
Das Feature “pure String Transfer” wird für die erste Version des Strawberry Communication Standards verwendet. Dieses Feature verwendet reine Python Strings zum austausch von Daten und Events.
Die Interne Bezeichnung für pure String Transfer lautet pST_com
oder feat@pst
JSON Server-to-Client³
Das JSON Feature Server-to-Client ist die Weiterentwicklung von pure String Transfer und bietet nun eine kompakte Datenstruktur an, um einfach Daten und Events am Client zu senden. So können auch “leise” Events im Hintergrund passieren
Die Interne Bezeichnung für JSON Server-to-Client lautet json_stc
oder json@stc
JSON Client-to-Server³
Das JSON Feature Client-to-Server ist die Implementierung von JSON für den Server, sodass der Server nun JSON-Daten vom Client annimmt statt pure String Transfer² Daten. Die zweite Version des Strawberry Communication Standards verwendet von Client zum Server weiterhin pure String Transfer, während die dritte Version vermutlich JSON Client-to-Server verwendet.
Die Interne Bezeichnung für JSON Client-to-Server lautet json_cts
oder json@cts
Ab stbcv2 verwenden wir neue und eigene JSON-Datentypen. Hier ist ein kleiner überblick von unseren Datentypen
Nutzernachrichten (user_message)
Nutzernachrichten (user_message
) sind Nachrichten die von einem Nutzer gesendet wurden.
Der Datentyp beinhaltet wichtige Daten, wie z.B. der Nutzername, das Badge, die Rollenfarbe und am wichtigsten, die Nachricht des Nutzers.
Die Struktur könnte sich mit stbcv3 ändern.
Systemnachrichten (system_message)
Systemnachrichten (system_message
) sind Nachrichten die vom System gesendet wurden.
Dort handelt es sich meist um Nachrichten, dass ein neuer Nutzer beigetreten ist, allerdings können Systemnachrichten auch die eingebauten Slash-Commands sein.
Dieser Datentyp ist ziemlich kompakt und sehr klein. Dies könnte sich aber eventuell mit stbcv3 ändern.
Benachrichtigungs-Backend (stbchat_notification)
Benachrichtigungs-Backend (stbchat_notification
) sind interne Nachrichtenevents die vom System gesendet wurden.
Diese Nachricht siehst du nicht, aber führt im Hintergrund ein Prozess aus, nämlich der, um dir eine Desktop-Benachrichtigung zu senden.
Dieser Datentyp ist etwas komplexer. Die Struktur dieses Datentypes könnte sich mit stbcv3 ändern.
Chatdatenübertragungs-Backend (stbchat_backend)
Chatdatenübertragungs-Backend (stbchat_backend
) sind interne Nachrichtenevents die vom System gesendet wurden.
Diese Nachricht siehst du nicht, aber führt im Hintergrund ein Prozess aus. Dieser Prozess kann unterschiedlich sein.
Aktuell sendet stbchat_backend
nur den Nutzernamen an den Client zurück. Der Client kann den Nutzernamen dann für verschiedene Dinge verwenden.
Dieser Datentyp ist aufgrund seiner Neuheit sehr klein. Mit stbcv3 oder vielleicht sogar stbcv2 erhält dieser Datentyp allerdings noch mehr Features und damit eine höhere Bedeutung.
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 erfahrenDas 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.
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 | ✅ | ✅ | ❌ |
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