You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 10:55:14