java - 处理用户警报面板实时更新的最佳方式
问题描述
我想使用 Angular 和 java spring/spring boot 构建一个经典的警报面板,它可以实时响应事件和更新,这样用户就不需要刷新页面来获取他们的最新警报。由于需要实时更新,因此 Web 套接字似乎是我最好的选择。
在浏览了一些教程之后,似乎从 angular 连接到后端套接字将非常容易,并且可以轻松地打开/关闭连接。这将使用 stompjs 和 sock js-client。
但是,在创建用户将订阅的各种“主题”时,我的问题似乎出在后端。所有这些教程仅涵盖在服务器启动时创建一个每个用户都应该加入的静态房间(如聊天应用程序)。但是对于我的场景,我需要动态创建主题(每个用户一个单独的主题),而不是一开始就创建我的所有主题。
任何人都有使用 spring 或 spring boot 为我的用户动态创建主题以订阅的经验?
我一直在看的主要教程是: https ://medium.com/oril/spring-boot-websockets-angular-5-f2f4b1c14cee
解决方案
我发现通过在我的控制器中使用它:
@MessageMapping("/meeting/{roomId}")
private void sendMessageTpPrivateRoom(String message, @DestinationVariable String roomId) throws IOException {
System.out.println("message sent to: " + roomId);
this.template.convertAndSend("/meeting/" + roomId, message);
addToHistory(roomId, message);
}
在我的配置中结合这个:
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/socket")
.setAllowedOrigins("*")
.withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.setApplicationDestinationPrefixes("/app")
.enableSimpleBroker("/chat", "/meeting");
}
我能够动态创建聊天室,其中一个房间的客户不会收到来自另一个房间的客户的消息
推荐阅读
- javascript - 使用 HTML,我如何操作用户上传的文件,然后允许该用户下载它?
- django - 使用 Django Rest Framework 只查询一次
- c++ - 使用 Rcpp 公开构造函数,该构造函数将指向对象的指针作为参数
- delphi - 已分配 - 检查嵌套属性
- django - 如何修复 Ajax 中没有反向匹配错误
- php - 关于 Redis 问题的 PHP7.4 会话存储
- python - 根据其中的内容将 css 更改为标签
- android - 空对象引用上的 Firestore 集合
- java - 如何通过蓝牙从安卓应用程序向电脑发送键盘命令?
- javascript - TypeError:$ 不是函数,同时尝试注册