我基本上按照文档中提供的指南在 Spring 中配置 Websockets。
我目前正在尝试按照“从任何地方发送消息” 部分中的说明从服务器向客户端发送消息
按照示例,您可以自动装配一个名为 SimpMessagingTemplate 的类
@Controller
public class GreetingController {
private SimpMessagingTemplate template;
@Autowired
public GreetingController(SimpMessagingTemplate template) {
this.template = template;
}
@RequestMapping(value="/greetings", method=POST)
public void greet(String greeting) {
String text = "[" + getTimestamp() + "]:" + greeting;
this.template.convertAndSend("/topic/greetings", text);
}
}
但是,我当前的项目找不到 bean“SimpMessagingTemplate”。(Intellij:'无法自动装配。找不到 SimpMessagingTemplate 类型的 bean'。
我在互联网上检查了几个示例,但我找不到如何让 Spring 创建 SimpMessagingTemplate 的实例。我怎样才能自动接线?
编辑:
我决定发送更多的背景信息。这是我当前的 websocket 配置:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:websocket="http://www.springframework.org/schema/websocket"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/websocket
http://www.springframework.org/schema/websocket/spring-websocket-4.0.xsd">
<!-- TODO properties to be read from a properties file -->
<websocket:message-broker application-destination-prefix="/app">
<websocket:stomp-endpoint path="/new_session" >
<websocket:sockjs/>
</websocket:stomp-endpoint>
<websocket:simple-broker prefix="/topic"/>
</websocket:message-broker>
</beans>
Websocket 与此控制器一起使用
@Controller
public class SessionController {
private static final Logger log = LoggerFactory.getLogger(SessionController.class);
@MessageMapping("/new_session")
@SendTo("/topic/session")
public SessionStatus newSession(Session session) throws Exception {
Thread.sleep(3000); // simulated delay
log.info("Response sent !!");
return new SessionStatus("StatusReport, " + session.toString() + "!");
}
}
我只是不知道如何使这项工作
public class SessionController {
private static final Logger log = LoggerFactory.getLogger(SessionController.class);
private SimpMessagingTemplate template;
@Autowired
public SessionController(SimpMessagingTemplate template) {
this.template = template;
}
}
由于找不到 bean“SimpMessagingTemplate 模板”。Spring 文档没有提供有关此问题的更多详细信息。
编辑: github中的工作代码示例