Ich versuche eine Anwendung zu erstellen, wo der Server Nachricht in einigen Abständen an den Client weiterleiten wird. Ich habe eine einfache HTML-Datei wie folgt.Wie mit Feder websocket kommunizieren
<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>
Ich öffnete die HTML-Datei im Dateisystem. file: ///export/data1/test-ws.html im Browser.
Jetzt habe ich eine Feder Web-Buchse wie folgt.
@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();
}
}
Haben Sie einen Gruß Controller wie diese, die eine Nachricht an das Thema in einigen internen
@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();
}
}
}
Wo i i-Verbindung hergestellt wird sehen können, drücken Sie die Verbindungstaste drücken sollte. Aber danach sehe ich keine Nachricht im Browser, die vom Server geschoben werden sollte.
Ich erwarte, dass die 'helloooooooooooo' Nachricht in jedem Intervall in meiner Browserkonsole gedruckt werden soll.
Vielen Dank. Es funktionierte :) –