Java Spring Stomp可以发送未经请求的消息
在Spring WebSocket文档中,我发现了这样一句话: 重要的是要知道服务器不能发送未经请求的消息 (25.4.1) 但是,我尝试了以下代码:Java Spring Stomp可以发送未经请求的消息,java,spring,spring-mvc,websocket,Java,Spring,Spring Mvc,Websocket,在Spring WebSocket文档中,我发现了这样一句话: 重要的是要知道服务器不能发送未经请求的消息 (25.4.1) 但是,我尝试了以下代码: @Controller public class WebsocketTest { @Autowired public SimpMessageSendingOperations messagingTemplate; @PostConstruct public void init(){ Sched
@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 docs说服务器不能发送未经授权的消息呢?下一句话可能意味着在stomp.js客户端中,您需要设置订阅: 来自服务器的所有消息都必须响应特定的客户端 订阅 但这并不一定意味着响应请求。例如,web套接字可以向以下用户发送信息: Javascript:
stompClient.subscribe('/return/analyze', function(data) {
generateTableData(JSON.parse(data.body));
});
@Autowired
private SimpMessagingTemplate simpMessagingTemplate;
public void sendSetpoint(String data) throws Exception {
this.simpMessagingTemplate.convertAndSend("/return/analyze", data);
}
弹簧:
stompClient.subscribe('/return/analyze', function(data) {
generateTableData(JSON.parse(data.body));
});
@Autowired
private SimpMessagingTemplate simpMessagingTemplate;
public void sendSetpoint(String data) throws Exception {
this.simpMessagingTemplate.convertAndSend("/return/analyze", data);
}
但除非存在订阅,否则它无法向客户端发送未经请求的消息。如果这是他们的意图,那就有点措词不当