未调用Java Spring STOMP消息映射
我正在尝试让我的websocket客户端(浏览器)向我的服务器发送消息。服务器应使用未调用Java Spring STOMP消息映射,java,spring,spring-mvc,jackson,stomp,Java,Spring,Spring Mvc,Jackson,Stomp,我正在尝试让我的websocket客户端(浏览器)向我的服务器发送消息。服务器应使用@MessageMapping注释捕获消息,如下所示: @Controller public class GameController { @MessageMapping("/game/{id}") public void onMessage(@DestinationVariable String id,Message message) { System.out.println(
@MessageMapping
注释捕获消息,如下所示:
@Controller
public class GameController {
@MessageMapping("/game/{id}")
public void onMessage(@DestinationVariable String id,Message message) {
System.out.println("reached");
System.out.println(id);
System.out.println(message);
}
}
上面的代码段工作正常,因为“Message”对象来自org.springframework.messaging.Message
但是,当我尝试将传入消息转换为我自己的POJO时,如下所示:
@MessageMapping("/game/{id}")
public void onMessage(@DestinationVariable String id,ChatMessage message) {
System.out.println("reached");
System.out.println(id);
System.out.println(message);
}
不再调用该函数。阅读后,看起来我们可以定义POJO来封装JSON字符串,@MessageMapping应该自动将JSON转换为我们的自定义Java对象,但它对我不起作用(没有调用MessageMapping函数)
我想知道是否有人能为我指出问题所在的大致方向。需要注意的是,教程使用了SpringBoot,但我使用的是SpringMVC。我怀疑SpringBoot可能有一些我没有的自动配置属性,但我已经尝试配置我自己的Jackson ObjectMapper并在WebSocketConfig中注册它(不起作用)
任何帮助都将不胜感激因此,我没有使用自己的对象作为参数,而是应该将其作为泛型类型使用,如下所示:
@MessageMapping("/game/{id}")
public void onMessage(@DestinationVariable String id,Message<ChatMessage> message) {
//Now we can get our ChatMessage object like so
ChatMessage m = message.getPayload();
}
@MessageMapping(“/game/{id}”)
消息(@DestinationVariable字符串id,消息消息消息)上的公共无效{
//现在我们可以像这样得到我们的ChatMessage对象
ChatMessage m=message.getPayload();
}
其中ChatMessage是映射到JSON输入的自定义对象您解决过这个问题吗?是的!我补充了一个答案