如何使用 spring+stomp+sockjs 获得 websocket 响应

Posted

技术标签:

【中文标题】如何使用 spring+stomp+sockjs 获得 websocket 响应【英文标题】:how to get websocket response with spring+stomp+sockjs 【发布时间】:2015-01-19 08:11:01 【问题描述】:

我使用spring+stomp向websocket客户端广播消息,但是我怎么知道结果是成功的呢?我使用setSendTimeout方法并catch Exception来检测convertAndSend是否成功,但是不起作用! java代码

@Resource
private SimpMessagingTemplate simpMessagingTemplate;

@RequestMapping("/test")
public String test() 
    simpMessagingTemplate.setSendTimeout(1);
    String result;
    try 
        simpMessagingTemplate.convertAndSend("/topic/test", "haha");
        result = "success!";
     catch (Exception e) 
        result = "failed! \n" + e.toString();
    
    return result;


js代码

<script src="/lib/websocket/sockjs.min.js"></script>
<script src="/lib/websocket/stomp.min.js"></script>
<script>
  var socket = new SockJS("/kefu");
  var client = Stomp.over(socket);
  client.debug = function (str) 
  ;

  client.connect(
          ,
          function () 
            client.subscribe('/topic/test', function(msg) 
              console.log(msg);
            );
          ,
          function (error) 
            console.log(error);
          
  );

</script>

【问题讨论】:

【参考方案1】:

WebSockets 是 TCP over HTTP 的抽象实现。 TCP 是可靠的,并保证将数据包传递给接收方。因此,您无需担心从应用程序控制器到前端 javascript 的传递。

【讨论】:

感谢您的回答!连接断开后我没有检测到,然后我调用convertAndSend方法,我不知道客户端是否收到我的消息!

以上是关于如何使用 spring+stomp+sockjs 获得 websocket 响应的主要内容,如果未能解决你的问题,请参考以下文章

带有 Sockjs 和 Spring 4 但没有 Stomp 的 WebSocket

如何在 Spring 5.3 及更高版本中使用 Stomp 和 SockJS 处理 CORS 起源?

如何使用 SockJs 通过 STOMP Java 客户端验证 Spring 非 Web Websocket?

没有 SockJS/StompJS 的 Spring STOMP 服务器

将 Spring websockets (sockJS + Stomp) 与基于令牌的身份验证 (JWT) 一起使用的最佳方法

Stomp SockJs 客户端 + 服务器 Spring