【发布时间】:2018-06-19 22:25:32
【问题描述】:
我正在尝试让我的 websocket 客户端(浏览器)向我的服务器发送一条消息。服务器应该使用@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);
}
}
上面的 sn-p 工作正常,因为“消息”对象来自 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);
}
该函数不再被调用。在阅读this tutorial 之后,看起来我们可以定义我们的 POJO 来封装 JSON 字符串,@MessageMapping 应该自动将 JSON 转换为我们的自定义 Java 对象,但它对我不起作用(没有调用消息映射函数)。
我想知道是否有人可以指出问题所在的大致方向。需要注意的是,本教程使用了 Spring Boot,但我使用的是 Spring MVC。我怀疑 SpringBoot 可能有一些我没有的自动配置属性,但我尝试配置我自己的 Jackson ObjectMapper 并将其注册到 WebSocketConfig 中(不起作用)。
任何帮助将不胜感激
【问题讨论】:
-
你解决了这个问题吗?
-
是的!我添加了一个答案
标签: java spring spring-mvc jackson stomp