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

Quarkus配置WebSocket over TLS(WSS)问题求助

Quarkus 2.7.1.Final 配置WebSocket over TLS(WSS)指南

一、Quarkus服务端WSS配置

1. 启用HTTPS基础配置

在项目的application.properties中添加HTTPS相关配置,WSS依赖HTTPS的运行环境:

# 开启HTTPS支持
quarkus.http.ssl.enabled=true
# 云环境通常使用443作为HTTPS/WSS端口,本地测试可改用8443
quarkus.http.port=8443
quarkus.http.ssl.port=443

# 证书配置(根据实际证书格式选择一种)
# 若使用PEM格式证书
quarkus.http.ssl.certificate.file=path/to/your/cert.crt
quarkus.http.ssl.certificate.key-file=path/to/your/private.key
# 若使用PKCS12格式证书
quarkus.http.ssl.certificate.key-store-file=path/to/your/keystore.p12
quarkus.http.ssl.certificate.key-store-password=your-keystore-pass

注:云环境如果由平台提供SSL终止(如负载均衡自带证书),可省略Quarkus内部的证书配置,只需确保HTTPS流量能正确转发到服务。

2. WebSocket代码无需额外修改

Quarkus基于Vert.x的WebSocket实现,在HTTPS启用后会自动适配WSS协议。原有的WebSocket端点代码保持不变即可:

import io.quarkus.websockets.next.OnOpen;
import io.quarkus.websockets.next.WebSocket;

@WebSocket(path = "/chat")
public class ChatWebSocket {

    @OnOpen
    public void onOpen() {
        // 原有连接逻辑无需改动
    }
}

启用HTTPS后,该端点会同时支持ws://和wss://访问,云环境只需暴露WSS对应的443端口即可。

3. 云环境部署注意事项

  • 开放安全组/防火墙的443端口,允许TCP流量
  • 确保负载均衡或反向代理正确转发WebSocket升级请求(需保留Upgrade: websocket和Connection: Upgrade请求头)

二、Angular客户端修改

1. 切换协议为WSS

将WebSocket连接地址从ws://替换为wss://,省略默认443端口:

// 原不安全连接
// const socket = new WebSocket('ws://your-domain.com/chat');

// 修改为WSS连接
const socket = new WebSocket('wss://your-domain.com/chat');

2. 动态适配协议避免混合内容错误

为了兼容本地开发(HTTP)和生产(HTTPS)环境,可通过当前页面协议动态生成WebSocket地址:

const wsProtocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
const socket = new WebSocket(`${wsProtocol}//${window.location.host}/chat`);

此方式可自动避免"页面HTTPS加载,请求WS端点"的混合内容拦截问题。

三、验证方式

  • 本地测试:启动Quarkus后,访问https://localhost:8443,在浏览器开发者工具的「网络」面板中查看WebSocket连接,确认协议为wss,状态码为101 Switching Protocols
  • 生产环境:使用wscat工具测试连接:
wscat -c wss://your-domain.com/chat

内容的提问来源于stack exchange,提问作者vizete

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:27:22