我正在尝试使用 spring-websocket 和 spring-messaging 设置 STOMP WS 端点。我正在尝试手动执行此操作:根本不涉及应用程序上下文,当然也不涉及调度程序。我的目标是在 ServletContextListener 内的代码中连接适当的 Spring 组件,然后直接使用 JSR 356 兼容容器(Tomcat 7)中的 javax.websocket.server.ServerContainer 注册连接的组件。首先,我希望将其与 spring-messaging 中内置的“简单”代理一起使用;其次,我想实现我自己的“代理”,以使用 VM 传输直接与进程内 ActiveMQ 集成。这与 spring-messaging 也提供的 STOMP 中继形成对比。
Spring 文档指出 ( http://docs.spring.io/spring/docs/current/spring-framework-reference/html/websocket.html ):
“...Spring 的 WebSocket 支持不依赖于 Spring MVC。借助 WebSocketHttpRequestHandler 将 WebSocketHandler 集成到其他 HTTP 服务环境中相对简单。”
但是,我觉得事情并不简单。本质上,我从以下开始:
public void contextInitialized(ServletContextEvent sce) {
ServerContainer websocketContainer = (ServerContainer) sce.getServletContext().getAttribute("javax.websocket.server.ServerContainer");
???
websocketContainer.addEndpoint(???);
}
最终得到了各种不连贯的 spring-websocket 和 spring-messaging 构造函数调用,这些调用无法编译,当然不值得在这里复制。
我意识到这有点含糊,这是因为我有点迷失了!有没有人做过类似的事情,或者有一些一般指导可以贡献?
最佳答案
你试过吗sample application - tests for the stock portfolio 。 (此链接位于 spring 文档链接的最末尾)。
它说
Demonstrates 3 approaches to testing a Spring STOMP over WebSocket application:
- 加载实际 Spring 配置(上下文子包)的服务器端 Controller 测试
- 服务器端 Controller 测试,一次测试一个 Controller ,无需加载任何 Spring 配置(独立子包)
- 使用嵌入式 Tomcat 和简单的 STOMP Java 客户端(tomcat 子包)进行端到端的完整集成测试 有关更多详细信息,请参阅相应测试的 Javadoc。
第二个选项可能就是您所需要的。
关于java - 手动设置 Spring WebSocket STOMP 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24746862/