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

如何为Java Spring Boot WebSocket客户端配置线上可访问的URL?

你不需要修改WebSocket配置里的/websocket路径,该路径是服务端的相对路径,和域名绑定不需要在Spring Boot WebSocket配置中完成,按以下步骤配置即可实现在https://mywebsite.com/websocket下正常使用:

1. 调整WebSocket跨域配置

你当前的配置缺少跨域规则,线上域名访问时会被浏览器同源策略拦截,修改registerWebSocketHandlers方法如下:

public void registerWebSocketHandlers(WebSocketHandlerRegistry webSocketHandlerRegistry) { 
  webSocketHandlerRegistry.addHandler(myHandler(), "/websocket")
    // 允许指定域名跨域,测试阶段可临时设置为"*"
    .setAllowedOrigins("https://mywebsite.com")
    .setHandshakeHandler(new DefaultHandshakeHandler(new TomcatRequestUpgradeStrategy()));
}

2. 配置反向代理(推荐Nginx)

通常不会直接把Spring Boot服务端口暴露到公网,用Nginx做反向代理即可实现域名路径和本地服务的映射,在你mywebsite.com对应的Nginx站点配置中添加以下规则:

server {
    # 你的HTTPS站点原有配置,已经配置好证书、监听443端口等
    listen 443 ssl;
    server_name mywebsite.com;
    ssl_certificate 你的证书路径.pem;
    ssl_certificate_key 你的证书密钥路径.key;

    # 新增WebSocket路径代理规则
    location /websocket {
        # 代理到服务器本地运行的Spring Boot服务
        proxy_pass http://127.0.0.1:8080;
        proxy_http_version 1.1;
        # 开启WebSocket协议升级支持
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        # 调整WebSocket长连接超时时间,按需修改
        proxy_read_timeout 3600s;
    }

    # 你站点其他的location规则,比如静态资源、后端接口代理等
}

重载Nginx配置后生效。

3. 客户端连接调整

线上HTTPS环境下,客户端需要使用wss协议连接,地址为:wss://mywebsite.com/websocket,禁止使用ws协议,否则会被浏览器判定为混合内容拦截。

4. 验证步骤

  • 首先在服务器本地测试ws://127.0.0.1:8080/websocket可正常连接,确认Spring Boot服务运行正常
  • 配置完成后用客户端测试公网wss://mywebsite.com/websocket连接即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 15:36:05