springboot websocket stompjs socketjs 按主题订阅

package com.example.lesson1.config;

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{

    public void configureMessageBroker(MessageBrokerRegistry config){
        config.enableSimpleBroker("/topic");
//        config.setApplicationDestinationPrefixes("/app");
    }

    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/webServer").withSockJS();
    }

}

 

 

package com.example.lesson1.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.handler.annotation.DestinationVariable;
import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.messaging.simp.annotation.SubscribeMapping;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class WebSocketController {

    @Autowired
    public SimpMessagingTemplate simpMessagingTemplate;

    @RequestMapping("/websocket")
    public ModelAndView websocket(){
        return new ModelAndView("websocket");
    }

    @MessageMapping("/subscribe")
    @SendTo("/topic/getResponse/{topicId}")
    public String subscribe(@PathVariable int topicId) {
        return "服务器发送消息"+topicId;
    }

    @SubscribeMapping("/topic/getResponse/{topicId}")
    public String sub2112(@DestinationVariable int topicId) {
        return "初始化订阅消息"+topicId;
    }

    @GetMapping("/serverMessage")
    @ResponseBody
    public void serverMessage() throws InterruptedException {

        while(true){

            simpMessagingTemplate.convertAndSend("/topic/getResponse/1","服务器端消息1");
            simpMessagingTemplate.convertAndSend("/topic/getResponse/0","服务器端消息0");
            Thread.sleep(1000);
        }


    }

}


    
    Hello topic




名字

你可能感兴趣的:(springboot websocket stompjs socketjs 按主题订阅)