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
相关产品推荐
相关产品推荐

