У меня есть этот сервер websocket, разработанный с использованием Spring Boot. Сервер отлично работает с клиентом на основе js.
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(final MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic");
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(final StompEndpointRegistry registry) {
registry.addEndpoint("/chat").withSockJS();
registry.addEndpoint("/chat");
}
}
Контроллер:
@Controller
public class ChatController {
@MessageMapping("/chat")
@SendTo("/topic/messages")
public OutputMessage send(final Message message) throws Exception {
final String time = new SimpleDateFormat("HH:mm").format(new Date());
return new OutputMessage(message.getFrom(), message.getText(), time);
}
}
Это серверная часть. Теперь для клиента я создал @ClientEndpoint, и когда я подключаюсь к URI «ws: // localhost: 8080 / spring-mvc-java / chat», я могу установить соединение и вижу, что Запускается обратный вызов @OnOpen для @ClientEndpoint.
Однако похоже, что userSession.getAsyncRemote (). SendText (message) не имеет никакого эффекта. Я не вижу ответа от сервера.
Я вижу, что клиент js:
- Подключение к серверу var socket = new SockJS ('/ spring-mvc-java / chat')
- Подписка на StompClient.subscribe ('/ topic / messages', ...
- Отправьте сообщениеrmpClient.send ("/ app / chat", ...
Я могу сделать первый шаг. Как достичь 2-го и 3-го шагов в клиенте на основе Java?
Спасибо