在那天我遇见你__ 2019-10-08 14:51 采纳率: 0%
浏览 2444

关于SpringBoot集成WebSocket后使用stomp发送消息对应路径未能成功接收到消息

自己尝试着搭建Springboot聊天室的项目,后台websocket配置如下

@Configuration
@EnableWebSocketMessageBroker //允许stomp协议
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer{
    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/stomp")   //添加STOMP协议的端点。// 这个URL是供WebSocket客户端或SockJS客户端连接服务端访问的地址。
         .setAllowedOrigins("*").addInterceptors(new HttpSessionHandshakeInterceptor()). //添加允许跨域访问
         withSockJS();  //指定端点使用SockJS协议
    }

    @Override
    public void configureMessageBroker(MessageBrokerRegistry registry) {
        registry.setApplicationDestinationPrefixes("/topic,/queue") //服务器推送给客户端的前缀
                .enableSimpleBroker("/app");  //客户端发送给服务端的前缀
    }

}

消息接收类的代码如下

@Controller
public class MessageController {

    @MessageMapping("/test")
    @SendTo("/topic/hhh")
    public String sendMessage(Map<String,Object> map){
        return "miao";
    }
}

理论上前台应该发送消息到/api/test时Controller类应该能接收到消息,但是发送消息后未能进入controller类

html就不贴了,js前端代码如下

window.onload=function(){
   var sockJs=new SockJS("/stomp");
   var stomp=Stomp.over(sockJs);
   stomp.connect({},function (frame) {
       console.log(frame);
       stomp.subscribe("/topic/hhh",function (data) {
           console.log(data)
       });
   })

   document.getElementById("sendMesssage").onclick=function () {
       console.log(stomp.connected);
       var message=document.getElementById("talkMessage");
       stomp.send("/app/test",{},JSON.stringify({"message":message}));
   }
}

连接完成时frame的控制台日志打印如下
Frame {command: "CONNECTED", headers: {…}, body: ""}
body: ""
command: "CONNECTED"
headers:
heart-beat: "0,0"
version: "1.1"
proto: Object
proto: Object
send时并没有断开连接,为啥发送不到对应地址?

  • 写回答

2条回答 默认 最新

  • dabocaiqq 2019-10-08 22:11
    关注
    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料