java—在spring boot和angular中使用WebSocket向客户端发送触发器

pb3skfrl  于 2021-07-13  发布在  Java
关注(0)|答案(0)|浏览(201)

我想从后端(基于springboot)向用户id为xyz的特定用户发起一个触发器(可能是一个通知)。
我发现的一个方法是:
最初我连接到一个websocket端点并订阅频道“/user/notifications/xyz”下面是我的脚本中的相关代码

connectToUserWebSocket(userId) {
        let socket = new SockJS('http://localhost:5000/fellowGenius');
        this.ws = Stomp.over(socket);
        let that = this;
        this.ws.connect(
          {},
          (frame) => {
            that.ws.subscribe('/user/Notifications/' +userId, (message) => {
            console.log("user subscribed");
            });

          },
          (error) => {
            alert('STOMP error ' + error);
          }
        );

    }

一旦我订阅了我的频道。我想发送一个触发器到客户端,它是由后端本身启动的,所以我在java服务中运行一个代码。我的相关java代码是:

@SendTo("/user/Notifications/{userId}")
    public String sendMeetingNotificationWebSocket(@DestinationVariable String userId) {
        return "hello";
    }

我的websocket配置是:

@Configuration      
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer{

        @Override
        public void registerStompEndpoints(StompEndpointRegistry registry) {
            registry.addEndpoint("/fellowGenius").setAllowedOrigins("*").addInterceptors(new HttpSessionHandshakeInterceptor()).withSockJS();
        }

        @Override
        public void configureMessageBroker(MessageBrokerRegistry config) {
            config.enableSimpleBroker("/inbox/","/user/Notifications/");
        }
}

但问题是,即使我可以看到一个网络插座连接在我的 Spring 启动控制台。但是我没有从客户端的函数得到响应。
请帮我解决这个问题。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题