Hallo,
ich bin dabei meine erste noch recht simple Netzwerkapp zu schreiben und hänge seit 2 Tagen an einem Problem, welches ich weder durch Suchmaschinen, Code-Beispiele noch die java-forum.org Suchfunktion lösen konnte. Aus dem Grund habe ich entschieden mich hier anzumelden und hoffe jemand kann mir bei meinem Problem helfen.
Zum Problem:
Ich möchte einen Client schreiben der Nachrichten von einem Server empfängt. Der Server kommuniziert mittels STOMP über WebSockets. Mein Client kann die Nachrichten auch empfangen allerdings weiß ich nicht wie ich die Nachrichten danach an meine Main-Methode übergebe.
Ich habe 3 Klassen und zwar ServerConnection welche die Verbindung aufbaut, MySessionHandler welche die Nachrichten empfängt und eine Message-Klasse, welche die Nachrichten speichert.
ServerConnection:
MySessionHandler
Message-Klasse
Und zu guter letzt meine Main:
Der Code wurde von einem Spring-Stomp-Tutorial adaptiert. Außerdem habe ich die Ausnahmenbehandlung zwecks der besseren Übersicht weg gelassen.
Ich hoffe jemand kann mir ein Stück weiterhelfen. Ich bin echt am verzweifeln
Schönen Abend!
ich bin dabei meine erste noch recht simple Netzwerkapp zu schreiben und hänge seit 2 Tagen an einem Problem, welches ich weder durch Suchmaschinen, Code-Beispiele noch die java-forum.org Suchfunktion lösen konnte. Aus dem Grund habe ich entschieden mich hier anzumelden und hoffe jemand kann mir bei meinem Problem helfen.
Zum Problem:
Ich möchte einen Client schreiben der Nachrichten von einem Server empfängt. Der Server kommuniziert mittels STOMP über WebSockets. Mein Client kann die Nachrichten auch empfangen allerdings weiß ich nicht wie ich die Nachrichten danach an meine Main-Methode übergebe.
Ich habe 3 Klassen und zwar ServerConnection welche die Verbindung aufbaut, MySessionHandler welche die Nachrichten empfängt und eine Message-Klasse, welche die Nachrichten speichert.
ServerConnection:
Java:
public class ServerConnection{
private StompSession session;
private WebSocketStompClient stompClient;
private StompSessionHandler sessionHandler;
private String host;
private String user;
private String pass;
public ServerConnection(String host, String user, String pass){
this.host = host;
this.user = user;
this.pass = pass;
connect();
}
private void connect(){
StompHeaders connectHeaders = new StompHeaders();
connectHeaders.add("login", user);
connectHeaders.add("passcode", pass);
List<Transport> transports = new ArrayList<>(1);
transports.add(
new WebSocketTransport(
new StandardWebSocketClient()));
SockJsClient sockJsClient = new SockJsClient(transports);
stompClient = new WebSocketStompClient(sockJsClient);
stompClient.setMessageConverter(new MappingJackson2MessageConverter());
sessionHandler = new MyStompSessionHandler();
session = stompClient.connect(host, (WebSocketHttpHeaders) null,
connectionHeader(), sessionHandler).get();
}
}
MySessionHandler
Java:
public class MyStompSessionHandler extends StompSessionHandlerAdapter {
@Override
public void afterConnected(StompSession session, StompHeaders connectedHeaders) {
session.subscribe("/user/queue/messages", new StompFrameHandler(){
@Override
public Type getPayloadType(StompHeaders headers){
return Message[].class;
}
@Override
public void handleFrame(StompHeaders headers, Object payload){
Message[] Messages = (Message[]) payload;
[U] //hier bekomme ich die Nachrichten[/U]
}
});
}
}
Message-Klasse
Java:
public class Message
{
private int id;
private String message;
private Timestamp timestamp;
}
Und zu guter letzt meine Main:
Java:
public class Main(){
public Main(){
var con = new ServerConnection("myhost", "user", "pass");
[U]//Hier möchte ich die Narichten auswerten.[/U]
}
}
Der Code wurde von einem Spring-Stomp-Tutorial adaptiert. Außerdem habe ich die Ausnahmenbehandlung zwecks der besseren Übersicht weg gelassen.
Ich hoffe jemand kann mir ein Stück weiterhelfen. Ich bin echt am verzweifeln
Schönen Abend!