Sul lato client JavaScript HoStomp oltre websocket utilizzando primavera e sockJS messaggio perso
stomp.subscribe("/topic/path", function (message) {
console.info("message received");
});
E sul lato server
public class Controller {
private final MessageSendingOperations<String> messagingTemplate;
@Autowired
public Controller(MessageSendingOperations<String> messagingTemplate) {
this.messagingTemplate = messagingTemplate;
}
@SubscribeMapping("/topic/path")
public void subscribe() {
LOGGER.info("before send");
messagingTemplate.convertAndSend(/topic/path, "msg");
}
}
Da questa configurazione, sono di tanto in tanto (circa una volta ogni 30 pagina si rinnova) sperimentando la caduta del messaggio, il che significa che non riesco a vedere né il messaggio "messaggio ricevuto" sul lato client né il traffico websocket dallo strumento di debug di Chrome.
"before send" è sempre registrato sul lato server.
Sembra che MessageSendingOperations non sia pronto quando lo chiamo nel metodo subscribe(). (se inserisco Thread.sleep (50), prima di chiamare messagingTemplate.convertAndSend il problema scomparirebbe (o molto meno probabilmente sarà riprodotto))
Mi chiedo se qualcuno abbia mai sperimentato lo stesso prima e se c'è un evento che può dimmi che MessageSendingOperations è pronto o no.
è stomp.subscribe eseguito dopo che il dom è pronto? –
@ ᴳᵁᴵᴰᴼ Sì. giusto. Posso vedere che il messaggio di iscrizione è stato inviato dal debug di Chrome per il traffico di rete websocket. Quindi non penso che sia il problema del lato client. – user2001850