【发布时间】:2017-11-27 21:00:01
【问题描述】:
我有这个使用 Spring Boot 开发的 websocket 服务器。服务器与基于 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”时,我能够建立连接,我可以看到触发@ClientEndpoint 的@OnOpen 回调。
但是,userSession.getAsyncRemote().sendText(message) 似乎没有任何效果。我没有看到来自服务器的响应。
我可以看到js客户端是:
- 连接到服务器 var socket = new SockJS('/spring-mvc-java/chat')
- 订阅 stompClient.subscribe('/topic/messages',...
- 发送消息 stompClient.send("/app/chat",...
我能够迈出第一步。如何在基于 Java 的客户端中实现第 2 步和第 3 步?
谢谢
【问题讨论】:
-
当您说基于 java 的客户端时,您使用的是任何 web socket 库和 stomp 库吗?
-
没有。没有跺脚,没有 sockjs。我实际上正在尝试关注这件事programmingforliving.com/2013/08/…
标签: java spring-boot websocket spring-websocket java-websocket