2016-08-22 57 views
3

我想要實現我謨內的WebSocket做一些如通知SockJS了跺腳使用angular2春季啓動

這是我謨春季啓動

@Override 
    public void configureMessageBroker(MessageBrokerRegistry config) { 
     config.enableSimpleBroker("/topic"); 
     config.setApplicationDestinationPrefixes("/app"); 
    } 

    @Override 
    public void registerStompEndpoints(StompEndpointRegistry registry) { 
     registry.addEndpoint("/hello").setAllowedOrigins("*").withSockJS(); 
    } 

,並在我的配置web套接字我控制器我有這樣的方法:

@MessageMapping("/hello") 
    @SendTo("/topic/templatesWS") 
    public void TemplatesWebSocket() { 
     try { 
      Thread.sleep(1000); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
     System.out.println("calling juste"); 
    } 

,並在我的網頁我的客戶端的index.html我加入這個

<script src="//cdn.jsdelivr.net/sockjs/1/sockjs.min.js"></script> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/stomp.js/2.3.3/stomp.js"></script> 

並在我的組件angular2我使用這個

declare let SockJS; 
     declare let Stomp; 


     var socket = new SockJS('http://localhost:8080/hello'); 
     socket.ono 
     var stompClient = Stomp.over(socket); 
      stompClient.connect({}, function(frame) { 
      console.log('Connected: ' + frame); 
      stompClient.subscribe('http://localhost:8080/template/topic/templatesWS', function(greeting) { 
       console.log("from from", greeting); 
      }); 
     }, function (err) { 
      console.log('err', err); 
     }); 

我如何調用該方法TemplatesWebSocket()

enter image description here

+0

我認爲subscribe()參數應該是簡單的'/ topic/templatesWS' –

+0

如何發送數據到服務器或獲取和事件後的對象? –

+0

我解決這個錯誤,我有一些配置的WebSocket安全即阻止連接 但行代碼stompClient.subscribe沒有從控制器調用該方法 TemplatesWebSocket()我怎麼能稱之爲 –

回答

1

檢查這個例子,我剛剛上傳: https://github.com/mtrojahn/spring-boot-websocket

我想你的意思是發送一個命令到服務器a nd得到迴應,對吧?上面的示例涵蓋了對客戶端發送的命令的響應以及發送給客戶端的週期性消息。

您可能正在尋找這樣的事情:

stompClient.client.send("/app/somecommand", {}, ""); 

我希望它能幫助。

+1

發送方法,它工作正常,但stompClient.subscribe不工作 爲什麼我們使用訂閱方法? 當我們在一個預定的方法訂閱是爲了獲得例如數據每20 20次,但在與MessageMapping的情況下,如果你可以向我解釋謝謝(我updat問題,我添加subscribe方法錯誤的圖片 –

+0

Websockets是關於訂閱到服務並等待數據。服務器將數據推送(廣播)給所有訂閱的客戶端。 20年代的例子表明,每20秒發生一次,你的客戶將收到一條消息。 您的訂閱方法未定義的問題聽起來像是瀏覽器正在加載腳本的順序問題。 –

+0

非常感謝你的幫助 –