简体   繁体   中英

Stomp not sending the messages recieved from client

im facing a problem with the integration of stompjs and spring boot app .I tried a code unfortunately does not work i did not the reason .Actually the client fill a form and after submitting he sent the number of order to the other connected users via sockJS. This is the code please give me some advises to make it work :

 $('#btn-save').on('click', function (e) { sendForm(); }); var ws; var stompClient; ws=new SockJS("/formordre"); stompClient = Stomp.over(ws); stompClient.connect({},function(frame){ stompClient.subscribe("/topic/formordre",function(message){ console.log("Received:" + message) ; toastr.options = { "closeButton": true, "debug": false, "newestOnTop": false, "progressBar": false, "positionClass": "toast-top-right", "preventDuplicates": false, "onclick": null, "showDuration": "300", "hideDuration": "1000", "timeOut": "0", "extendedTimeOut": "0", "showEasing": "swing", "hideEasing": "linear", "showMethod": "fadeIn", "hideMethod": "fadeOut" } toastr.info( message.body); }); },function(error){ console.log("Stomp protocol error "+ error); }); }); function sendForm(){ stompClient.send("/topic/formordre",{},$('#num_ord').val()); }; 
 package com.example.dot.web; import org.springframework.context.annotation.Configuration; import org.springframework.messaging.simp.config.MessageBrokerRegistry; import org.springframework.web.socket.config.annotation.AbstractWebSocketMessageBrokerConfigurer; import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker; import org.springframework.web.socket.config.annotation.StompEndpointRegistry; @Configuration @EnableWebSocketMessageBroker public class WebSocketBrokerConfig extends AbstractWebSocketMessageBrokerConfigurer{ @Override public void registerStompEndpoints(StompEndpointRegistry registry) { registry.addEndpoint("/formordre").withSockJS(); } @Override public void configureMessageBroker(MessageBrokerRegistry registry) { registry.setApplicationDestinationPrefixes("/app") .enableSimpleBroker("/topic","/queue"); } } 
 package com.example.dot.web; import java.io.IOException; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; import org.springframework.context.annotation.Configuration; import org.springframework.web.socket.TextMessage; import org.springframework.web.socket.WebSocketSession; import org.springframework.web.socket.config.annotation.EnableWebSocket; import org.springframework.web.socket.config.annotation.WebSocketConfigurer; import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry; import org.springframework.web.socket.handler.TextWebSocketHandler; @Configuration @EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer { @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler(new QuestionHandler(), "/formordre").withSockJS(); } class QuestionHandler extends TextWebSocketHandler { private List<WebSocketSession> sessions = new CopyOnWriteArrayList<>(); @Override public void afterConnectionEstablished(WebSocketSession session) throws Exception { sessions.add(session); } @Override protected void handleTextMessage(WebSocketSession session, TextMessage message) { for (WebSocketSession s : sessions) { try { s.sendMessage(message); } catch (IOException e) { e.printStackTrace(); } } } } } 

I solve it the declaration of ws and stompClient variables must be at the top of the script . But when i submit the form , the message sent mutilple time , i don't know the reason any one had idea !!!!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM