STOMP

https://www.cnblogs.com/xfeiyun/p/16192241.html

STOMP 是一个简单的克互操作的协议,通常用于中间服务器与客户端之间进行异步消息传递。

<!--websocket-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
    // 配置消息代理选项
    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        // 启用一个简单的消息代理并设置一个或多个前缀用于过滤目标以限制由代理处理的消息
        config.enableSimpleBroker("/topic");
        // 设置一个或多个前缀用于过滤目标,以限制由注解方法处理的消息
        config.setApplicationDestinationPrefixes("/app");
    }

    // 注册STOMP协议的节点(endpoint),并映射指定的URL
    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        // 注册一个STOMP的endpoint,并指定使用SockJS协议
        registry.addEndpoint("/gs-guide-websocket");
    }
}
@RestController
@Slf4j
@RequestMapping("/")
public class ProcessController {
    @MessageMapping("/hello")
    @SendTo("/topic/greetings")
    public Greeting greeting(Message message) throws Exception {
        Thread.sleep(1000);
        return new Greeting("Hello, " + HtmlUtils.htmlEscape(message.getName()) + "!");
    }
}
const stompClient = new StompJs.Client({
    brokerURL: 'ws://localhost:9001/gs-guide-websocket'
});

stompClient.onConnect = (frame) => {
    setConnected(true);
    console.log('Connected: ' + frame);
    stompClient.subscribe('/topic/greetings', (greeting) => {
        showGreeting(JSON.parse(greeting.body).content);
    });
};

stompClient.onWebSocketError = (error) => {
    console.error('Error with websocket', error);
};

stompClient.onStompError = (frame) => {
    console.error('Broker reported error: ' + frame.headers['message']);
    console.error('Additional details: ' + frame.body);
};

最后更新于

这有帮助吗?