我想从后端(基于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 启动控制台。但是我没有从客户端的函数得到响应。
请帮我解决这个问题。
暂无答案!
目前还没有任何答案,快来回答吧!