So versuche ich ein Objekt von Client-> Server & Server-> Client mit WebSocket zu senden. Sende Objekt von client-> Server funktionieren gut, mittlerweile server-> Clientkann Objekt über Websocket nicht senden
org.springframework.messaging.converter.MessageConversionException eine Ausnahme auslösen: Kann nicht JSON lesen: nicht Instanz von java.lang.String deserialisieren Kann aus von START_OBJECT Token
Hier wird die Klasse versuche ich
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TextMessage {
private String sender;
private String room;
private String message;
}
und dies ist der Code auf der Client-Seite
sendenpublic class TelepatiClient {
public static void main(String[] args) {
WebSocketClient client = new StandardWebSocketClient();
WebSocketStompClient stompClient = new WebSocketStompClient(client);
stompClient.setMessageConverter(new MappingJackson2MessageConverter());
stompClient.setTaskScheduler(new ConcurrentTaskScheduler());
String url = "ws://localhost:8000/connect";
StompSessionHandler handler = new TelepatiSessionHandler();
stompClient.connect(url, handler);
new Scanner(System.in).nextLine();
}
}
public class TelepatiSessionHandler extends StompSessionHandlerAdapter {
@Override
public void afterConnected(StompSession session, StompHeaders connectedHeaders) {
session.subscribe("/room/global", this);
session.send("/test", new TextMessage("test", "test", "test"));
}
@Override
public void handleFrame(StompHeaders headers, Object payload) {
System.out.println(payload.toString());
}
@Override
public void handleException(StompSession session, StompCommand command, StompHeaders headers, byte[] payload, Throwable exception) {
exception.printStackTrace();
super.handleException(session, command, headers, payload, exception);
}
}
und dies ist Nachricht Controller auf der serverseitigen
@Controller
public class TelepatiController {
@MessageMapping("/test")
@SendTo("/room/global")
public TextMessage getMessage(TextMessage message) {
System.out.println("get message :" + message.toString());
return new TextMessage("test2", "test2", "test2");
}
}
ich in der Lage war System.out.printin laufen ("Meldung:" + message.toString());, aber Nachrichtenkonvertierungsausnahme auf der Client-Seite erhalten, wenn neue TextMessage zurückgegeben wird ("test2", "test2", "test2");. Von meinem Test zuvor funktioniert die Rückgabe eines String-Objekts gut, warum funktioniert das zurückgegebene TextMessage-Objekt nicht? Wie kann ich irgendein Objekt (in diesem Fall TextMessage) von Server-> Client senden? Vielen Dank!