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

Spring Boot WebSocket多聊天室Postman测试报404错误排查

问题分析与解决方案

核心错误原因

你混淆了WebSocket连接端点和STOMP消息目的地的概念:

  • WebSocket连接仅需访问注册的端点ws://localhost:8084/ws,无需在URL中拼接消息路径
  • 报错Invalid SockJS path '/chat/12' - required to have 3 path segments,是因为你错误地将消息目的地直接追加到WebSocket连接URL后,SockJS无法识别这种格式的路径

具体修正步骤

1. 确认消息目的地的完整路径

你的配置中设置了应用前缀:

registry.setApplicationDestinationPrefixes("/Chatroom");

控制器中的@MessageMapping("/chat/{roomId}/sendMessage")会与该前缀组合,最终完整的消息目的地是:
/Chatroom/chat/{roomId}/sendMessage

2. 正确的Postman测试流程

Postman中测试STOMP消息需先建立连接,再发送消息:

  • 打开Postman的WebSocket请求,选择STOMP协议
  • 连接URL填写:ws://localhost:8084/ws
  • 连接成功后,发送SEND帧:
    • Destination字段填写:/Chatroom/chat/12/sendMessage
    • Payload填写ChatMessage的JSON格式数据,示例:
      {
        "content": "测试消息",
        "sender": "用户A"
      }
      

3. 可选:SockJS连接方式(若需兼容旧浏览器)

如果使用SockJS兼容不支持WebSocket的环境,连接URL应为:
http://localhost:8084/ws/sockjs
消息目的地仍需通过SEND帧指定,不可拼在URL中。

4. 服务端配置验证

你的配置和控制器逻辑本身无问题,只需确保:

  • 客户端发送的消息目的地前缀与setApplicationDestinationPrefixes设置的/Chatroom一致
  • 客户端订阅消息时,需订阅/channel/12(对应服务端convertAndSend(format("/channel/%s", roomId))的推送路径)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:45:37