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」メッセージを各時間間隔で印刷する必要があります。
ありがとうございます。出来た :) –