Quarkus WebSockets-Next:服务器主动发消息与DTO传输问题
问题解答
1. 服务器主动向所有连接客户端推送消息
Quarkus WebSockets Next 提供了 WebSocketConnections 组件,用于管理所有活跃的WebSocket连接。在业务类中注入该组件,即可在计算完成后主动广播消息。
修改你的ServerCode类:
@ApplicationScoped public class ServerCode { @Inject WebSocketConnections webSocketConnections; public void someCalculation(){ // 模拟计算生成客户端需要的数据 List<InformationForClientDTO> listForClients = new ArrayList<>(); // 此处填充计算结果到listForClients // 向所有连接的客户端广播数据 webSocketConnections.broadcast().sendObjectAndAwait(listForClients); } }
2. 发送完整DTO对象
Quarkus WebSockets Next 默认集成Jackson,会自动将Java对象序列化为JSON格式发送,无需手动转换为文本。只要你的DTO类具备可序列化的条件(比如用Lombok的@Data生成getter/setter),直接使用sendObjectAndAwait或异步的sendObject方法即可。
确保你的嵌套DTO也满足序列化要求:
@Data public class FinancialCalculationsDTO { // 你的字段定义,比如金额、时间等 }
同时,WebSocket端点类只需保持基础连接逻辑即可:
@WebSocket(path = "/financial-updates") public class FinancialUpdateWebSocket { @Inject WebSocketConnection connection; @OnOpen public void onOpen() { System.out.println("客户端连接: " + connection.id()); } @OnClose public void onClose() { System.out.println("客户端断开: " + connection.id()); } }
这样,当服务器完成计算后,所有连接到/financial-updates的客户端都会收到序列化后的InformationForClientDTO列表,客户端可直接解析为对应对象使用。
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

