javascript - 如何等待订阅建立?

标签 javascript spring-mvc websocket stomp sockjs

我有以下js代码:

stompClient.subscribe('/topic/clients', function (calResult) {
    updateClientsTable(JSON.parse(calResult.body));
});
$.get("/clients", null);

和以下服务器代码(最后一行调用它):

 @GetMapping(value = {"/clients"})
 @ResponseBody
 public void loadClients() {
      brokerMessagingTemplate.convertAndSend("/topic/clients", clientService.getClientList());
 }

有时前端会错过 $.get("/clients", null);

的结果

据我了解,问题是:在前端获得结果的那一刻,订阅没有发生。

如果将 $.get("/clients", null); 放在代码下方 - 一切正常。

您能解释一下如何等待订阅建立吗?

最佳答案

我认为不将 REST 请求与此消息传递模式混合使用会更有意义。

您是否考虑过通过 SockJS 将“updateClients”命令发送到回复“/topic/clients” channel 的“/apps/updateClients” channel ?

关于javascript - 如何等待订阅建立?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44461570/

相关文章:

java - 从 Spring Security 成功登录时不会调用 Spring MVC Controller 方法 - 获取 404 状态

node.js - 在azure上socket.io传输是 'polling'而不是 'websocket'

javascript - 更改后使用 AJAX 重新上传文件会导致 Chrome 中的 net::ERR_UPLOAD_FILE_CHANGED

javascript - Jquery 递增数字,限制为 5

javascript - 通过javascript连接数据库时为"login failed for user"

java - Spring Security 不拦截

java - Hibernate Validator 不起作用,但我不知道为什么

javascript - React-Motion Spring 组件导致不变违规

javascript - 如何使用 JavaScript 从被拒绝的 WebSocket 打开握手中读取状态代码?

php - 如何使 "server"PHP 脚本与其他脚本通信