Hallo zusammen,
ich stoße gerade auf ein recht frustrierendes Problem und weiß hier nicht mehr weiter.
Ich habe einen WebSocket Server, geschrieben mit der Jakarat und Tyrus API. Meine Anfragen an den WebSocket Server werden mittels JavaScript in einer HTML gesendet. In meiner HTML Datei habe ich ein Formular mit zwei Eingabefelder. Eines in dem man seinen Benutzername angeben kann und eines für eine Textnachricht. Die Daten werden als JSON Objekt an meinen WebSocket Server gesendet. Ich möchte nun die Textnachricht auswerten und zwischen einem Chatbefehl, der mit einem Slash eingeleitet wird, oder einer normalen Textnachricht unterscheiden.
Zuerst empfange ich die Client Eingabe über meine Annotation @OnMessage
Hier kann man schon sehen, dass meine Methode onMessage ein JsonObject erwartet. In der ersten Zeile möchte ich eine neue Variable namens message mit dem JsonValue, der als String gecastet wird, aus dem JsonObject der Chatnachricht (dessen Key chatInput lautet) initialisieren. Anschließend instanziiere ich meine Klasse Command und rufe die Methode listernForCommands auf. Diese Methode soll nun, in der Theorie, den Unterschied zwischen Chatbefehl und normaler Textnachricht herausfinden.
Meine Nachricht sieht beispielsweise so aus: " A " (ohne die Anführungszeichen!)
Zunächst wollte ich aber die unnötiges Whitespaces, links vor Anfang des ersten Characters und Rechts nach letzten Character, rauslöschen indem ich den Befehl trim() verwende.
Das klappt jedoch nicht, hier werden gar keine Whitespaces entfernt.
Ich habe es anschließend mit str.replaceAll probiert.
Das hat auch nicht geklappt, ich habe hier auch mehrere regex Optionen verwendet: \t, \n, \r, \n (alle mit doppelten Backslash)
Ich habe es auch mit folgenden Unicode characters als Regex probiert: \u0009, \u000A, \u000B
Oder auch das hier: \\s
Letzteres gibt mir das hier aus: "" A"" A"A"
Ich weiß nicht mehr wirklich weiter, wie kann ich dieses Problem am besten angehen?
ich stoße gerade auf ein recht frustrierendes Problem und weiß hier nicht mehr weiter.
Ich habe einen WebSocket Server, geschrieben mit der Jakarat und Tyrus API. Meine Anfragen an den WebSocket Server werden mittels JavaScript in einer HTML gesendet. In meiner HTML Datei habe ich ein Formular mit zwei Eingabefelder. Eines in dem man seinen Benutzername angeben kann und eines für eine Textnachricht. Die Daten werden als JSON Objekt an meinen WebSocket Server gesendet. Ich möchte nun die Textnachricht auswerten und zwischen einem Chatbefehl, der mit einem Slash eingeleitet wird, oder einer normalen Textnachricht unterscheiden.
Zuerst empfange ich die Client Eingabe über meine Annotation @OnMessage
Java:
@OnMessage
public void onMessage(JsonObject data, Session session) {
String message = data.get("chatInput").toString();
Command command = new Command().listenForCommands(message);
}
Hier kann man schon sehen, dass meine Methode onMessage ein JsonObject erwartet. In der ersten Zeile möchte ich eine neue Variable namens message mit dem JsonValue, der als String gecastet wird, aus dem JsonObject der Chatnachricht (dessen Key chatInput lautet) initialisieren. Anschließend instanziiere ich meine Klasse Command und rufe die Methode listernForCommands auf. Diese Methode soll nun, in der Theorie, den Unterschied zwischen Chatbefehl und normaler Textnachricht herausfinden.
Meine Nachricht sieht beispielsweise so aus: " A " (ohne die Anführungszeichen!)
Zunächst wollte ich aber die unnötiges Whitespaces, links vor Anfang des ersten Characters und Rechts nach letzten Character, rauslöschen indem ich den Befehl trim() verwende.
Code:
public Command listenForCommands(String message) {
message = message.trim();
}
Das klappt jedoch nicht, hier werden gar keine Whitespaces entfernt.
Ich habe es anschließend mit str.replaceAll probiert.
Code:
public Command listenForCommands(String message) {
message = message.replaceAll(" ", message);
}
Das hat auch nicht geklappt, ich habe hier auch mehrere regex Optionen verwendet: \t, \n, \r, \n (alle mit doppelten Backslash)
Ich habe es auch mit folgenden Unicode characters als Regex probiert: \u0009, \u000A, \u000B
Oder auch das hier: \\s
Letzteres gibt mir das hier aus: "" A"" A"A"
Ich weiß nicht mehr wirklich weiter, wie kann ich dieses Problem am besten angehen?