【发布时间】:2017-04-13 07:38:22
【问题描述】:
我想通过 web 套接字在 2 个 java 应用程序之间交换消息。
我有以下服务器配置:
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.setApplicationDestinationPrefixes("/app");
registry.enableSimpleBroker("/queue", "/topic");
registry.setUserDestinationPrefix("/user");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
//todo remove handshake handler when authorization is implemented
registry.addEndpoint("/ws").setAllowedOrigins("*").setHandshakeHandler(new TestHandshakeHandler()).withSockJS();
}
}
在标有@Controller的类里面我写了以下主题:
@MessageMapping("/consumer/client/add")
public void addClientRequest(String msgReq) {
logger.info(msgReq);
}
在客户内部我确实连接并在 sime bean 中我写了以下内容:
@Autowired
private SimpMessagingTemplate simpMessagingTemplate;
...
simpMessagingTemplate.convertAndSend("/app/consumer/client/add", new StubObject("message"));
但在从客户端方法addClientRequest 发送后不会调用。
请提供解决此问题的方法。
实际上我不明白问题。也许我发送到错误的目的地,或者我有配置问题或路径错误或其他问题。
附言
我知道我可以extend StompSessionHandlerAdapter
并从那里获得会话,但看起来这是一种糟糕的风格,应该是另一种实现方式
附言2
类内WebSocketTcpConnectionHandlerAdapter(内类WebSocketStompClient)我看到private volatile WebSocketSession session;
我想获取这个对象来发送消息
【问题讨论】:
标签: java stomp spring-websocket spring-messaging