2017-08-01 5 views
1

私は、サーバーがある間隔でクライアントにメッセージをプッシュし続けるアプリケーションを構築しようとしています。 私はこのような単純なhtmlファイルを持っています。spring websocketとの通信方法

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script> 
<script src="sockjs/sockjs.js"></script> 
<script src="stomp/stomp.js"></script> 
<div ng-app="myApp" ng-controller="myCtrl"> 
<button ng-click='connect()'>hi</button> 
</div> 

<script> 
var app = angular.module('myApp', []); 

app.controller('myCtrl', function($scope) { 
    $scope.connect = function() { 
     var socket = new SockJS('http://localhost:8099/myws'); 
     $scope.stompClient = Stomp.over(socket); 
     $scope.stompClient.connect({}, function (frame) { 
      console.log('Connected:bhabani ' + frame); 
      $scope.stompClient.subscribe('http://localhost:8099/topic/jobconfig', function (wsdata) { 
       console.log("helloooooooooooooooooooooooooooooooooooooooooooooooooo"); 
       console.log(wsdata); 
      }); 
     }); 
    } 
}); 
</script> 

ファイルシステムでhtmlファイルを開いた。ブラウザのファイル:///export/data1/test-ws.html

今私はこのような春のWebソケットがあります。

@Configuration 
@EnableWebSocketMessageBroker 
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer { 

    @Autowired 
    private GreetingController gc; 

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

    @Override 
    public void registerStompEndpoints(StompEndpointRegistry registry) { 
     registry.addEndpoint("/myws").setAllowedOrigins("*").withSockJS(); 
     new Thread(gc).start(); 
    } 

} 

は私は接続が確立されて見ることができます接続ボタンを押して、いくつかの内部

@Component 
public class GreetingController implements Runnable{ 

    @Autowired 
    private SimpMessagingTemplate template; 

    public void run() { 
     try { 
      Thread.sleep(10000); 
     } catch (InterruptedException e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
     } 
     while(true){ 
     try { 
      System.out.println("Sending"); 
      Thread.sleep(1000); 
      template.convertAndSend("/topic/jobconfig", new Greeting("hi")); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     } 
    } 

にトピックにメッセージをプッシュする必要があり、このような挨拶のコントローラを持っています。 しかし、その後、サーバーからプッシュされるはずのメッセージはブラウザに表示されません。

私は、ブラウザのコンソールに「helloooooooooooo」メッセージを各時間間隔で印刷する必要があります。

答えて

0

stompクライアントの購読コードのURLをhttp://localhost:8099/topic/jobconfigから/topic/jobconfigに変更してください。

$scope.stompClient.subscribe('/topic/jobconfig', function(wsdata) { 
        console.log("hello"); 
        console.log(wsdata); 
       }); 
+0

ありがとうございます。出来た :) –

関連する問題