私はクライアント - >サーバー& WebSocketでサーバー - クライアントからオブジェクトを送信しようとしています。 JSONを読み取れませんでした:アウトjava.lang.Stringでのインスタンスをデシリアライズすることはできませんクライアント - >サーバが正常に動作し、一方サーバ - >クライアントからオブジェクトを送信すると、例外はwebsocket経由でオブジェクトを送信することはできません
org.springframework.messaging.converter.MessageConversionExceptionを投げますここでSTART_OBJECTのトークン
は私が
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TextMessage {
private String sender;
private String room;
private String message;
}
を送信しようとしているクラスであり、これは、クライアント側
上のコードでありますpublic 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);
}
}
、これは私がのSystem.out.printlnを実行することができた
@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");
}
}
は( "メッセージを取得する:" + message.toString())サーバー側のメッセージコントローラです。が返されますが、新しいテキストメッセージ( "test2"、 "test2"、 "test2")を返すときは、クライアント側でメッセージ変換例外が発生します。;。以前のテストから、Stringオブジェクトを返すとうまくいきます。なぜTextMessageオブジェクトが返ってきていないのですか?どのように私は任意のオブジェクト(この場合TextMessage)をserver-> clientから送ることができますか?ありがとう!