gpt4 book ai didi

java - Spring Stomp 可以发送未经请求的消息

转载 作者:行者123 更新时间:2023-11-30 10:50:49 27 4
gpt4 key购买 nike

在 Spring WebSocket 文档中我发现了这句话:

It is important to know that a server cannot send unsolicited messages.

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/websocket.html(25.4.1)

不过我试过这段代码:

@Controller
public class WebsocketTest {

@Autowired
public SimpMessageSendingOperations messagingTemplate;

@PostConstruct
public void init(){
ScheduledExecutorService statusTimerExecutor=Executors.newSingleThreadScheduledExecutor();
statusTimerExecutor.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
messagingTemplate.convertAndSend("/topic/greetings", new Object());
}
}, 5000,5000, TimeUnit.MILLISECONDS);
}
}

消息按预期每 5000 毫秒广播一次。

那么为什么 Spring 文档说服务器不能发送未经请求的消息?

最佳答案

下一句可能意味着在stomp.js客户端中你需要设置一个订阅:

All messages from a server must be in response to a specific client subscription

但这并不一定意味着响应请求。例如,网络套接字可以将信息发送到以下位置:

Javascript:

stompClient.subscribe('/return/analyze', function(data) {
generateTableData(JSON.parse(data.body));
});

Spring :

@Autowired
private SimpMessagingTemplate simpMessagingTemplate;

public void sendSetpoint(String data) throws Exception {
this.simpMessagingTemplate.convertAndSend("/return/analyze", data);
}

但它不能向客户端发送未经请求的消息,除非该订阅存在。如果这是他们的意图,那就有点措辞不当。

关于java - Spring Stomp 可以发送未经请求的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34930703/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com