为了账号安全,请及时绑定邮箱和手机立即绑定

处理用户警报面板实时更新的最佳方式

处理用户警报面板实时更新的最佳方式

慕的地10843 2022-09-22 19:18:31

我想使用角度和java弹簧/弹簧启动构建一个经典的警报面板,该面板可以实时响应事件和更新,因此用户无需刷新页面即可获取最新警报。由于需要实时更新,似乎Web套接字是我最好的选择。

在浏览了一些教程之后,似乎从angular连接到后端插座将非常容易,并且可以轻松打开/关闭连接。这将使用踩踏和袜子js客户端。

但是,在创建用户将订阅的各种“主题”时,我的问题似乎将出在后端。所有这些教程仅介绍如何在服务器启动时创建每个用户都应该加入的静态房间(如聊天应用程序)。但对于我的方案,我需要动态创建主题(每个用户一个单独的主题),而不是在开始时创建我的所有主题。

是否有人有使用弹簧或弹簧启动来动态创建主题以供我的用户订阅的经验吗?

我一直在看的主要教程是:https://medium.com/oril/spring-boot-websockets-angular-5-f2f4b1c14cee


查看完整描述

1 回答

?
慕桂英546537

TA贡献1522条经验 获得超9个赞

我发现通过在我的控制器中使用它:


@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");

}

我能够动态创建聊天室,其中一个聊天室中的客户端不会从另一个聊天室中的客户端接收消息


查看完整回答
反对 回复 2022-09-22

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信