Using WebSocket to build an interactive web application ============================================================ .. code-block:: java package com.example.messagingstompwebsocket; import org.springframework.messaging.handler.annotation.MessageMapping; import org.springframework.messaging.handler.annotation.SendTo; import org.springframework.stereotype.Controller; import org.springframework.web.util.HtmlUtils; @Controller public class GreetingController { @MessageMapping("/hello") @SendTo("/topic/greetings") public Greeting greeting(HelloMessage message) throws Exception { Thread.sleep(1000); // simulated delay return new Greeting("Hello, " + HtmlUtils.htmlEscape(message.getName()) + "!"); } } .. code-block:: java package com.example.messagingstompwebsocket; import org.springframework.context.annotation.Configuration; import org.springframework.messaging.simp.config.MessageBrokerRegistry; import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker; import org.springframework.web.socket.config.annotation.StompEndpointRegistry; import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer; @Configuration @EnableWebSocketMessageBroker public class WebSocketConfig implements WebSocketMessageBrokerConfigurer { @Override public void configureMessageBroker(MessageBrokerRegistry config) { config.enableSimpleBroker("/topic"); config.setApplicationDestinationPrefixes("/app"); } @Override public void registerStompEndpoints(StompEndpointRegistry registry) { registry.addEndpoint("/gs-guide-websocket").withSockJS(); } } `@EnableWebSocketMessageBroker`: enables WebSocket message handling, backed by a message broker. config.enableSimpleBroker("/topic"): 订阅Broker名称,可以开启多个,例如:"/topic","queue" setApplicationDestinationPrefixes:全局使用的消息前缀(客户端订阅路径上会体现出来) .. code-block:: javascript function sendName() { stompClient.send("/app/hello", {}, JSON.stringify({'name': $("#name").val()})); } 在客户端侧,使用stompClient发送消息时,需要指定一个前缀/app。