Ich mache eine Angular-App für die Anzeige einer Daten kontinuierlich für einen Feder-Server gesendet. Meine Angular App verbindet sich korrekt, aber ich weiß nicht, wie man die Daten, die der Server sendet, abonniert. Ich zeige Ihnen mein Code:Abonnieren Sie eine kontinuierliche Daten mit Winkel-Websocket
Server, WebSocketConfiguration:
...
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfiguration implements WebSocketMessageBrokerConfigurer {
@Override
public void registerStompEndpoints(final StompEndpointRegistry registry){
registry.addEndpoint("/random")
.setAllowedOrigins("*")
.withSockJS();
}
....
Server, DataGenerator:
...
@SuppressWarnings("deprecation")
@Component
public class JapcDataGenerator implements ApplicationListener<BrokerAvailabilityEvent> {
[...]
public void sendDataUpdates(int val) {
System.out.println("sending : " + val);
this.messagingTemplate.convertAndSend("/data", val);
}
...
Client index.html:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-us" lang="en-us">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>WebSocket chart example</title>
</head>
<body ng-app="WebSocketAngularApp">
<div ng-controller="socktCtrl">
<p>{{data}}</p>
</div>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js"></script>
<script type="text/javascript" src="node_modules/angular-websocket/angular-websocket.js"></script>
<script type="text/javascript" src="resources/application.js" ></script>
</body>
</html>
Kunde application.js:
var socktApp = angular.module('WebSocketAngularApp',['ngWebSocket']);
socktApp.factory('mySockt',function($websocket){
var ws = $websocket('ws://137.138.245.169:8888/serverEx/random/websocket');
var collection = [];
ws.onMessage(function(message){
console.info("message: ", message);
collection.push(JSON.parse(message.data));
});
ws.onOpen(function(message){
console.log("Connection open!",message);
});
ws.onClose(function(){
console.log("Closing the socket.")
});
ws.onError(function(message){
console.info("Error in socket", message);
});
var methods = {
collection: collection,
get: function(){
ws.send(JSON.stringify({action: 'data'}));
}
};
return methods;
});
socktApp.controller ('socktCtrl', function($scope, mySockt){
$scope.data = mySockt;
});
Das Ergebnis des Verbindungsprotokoll zeigt, aber nie die Botschaft, weil ich weiß nicht, wie das Abonnement zu diesem Datenfluss zu tun (die Zeile: this.messagingTemplate.convertAndSend("/data", val);
).
Ich hatte Andrew versucht, aber was ich bekomme ist: 'angular.js: 13550 TypeError: ws.on ist keine Funktion' Vielen Dank für die Anfrage. –
Ich bin mit Winkel-socket-io v0.7.0, My socket sieht wie folgt aus: ... ... .factory ([ 'socket', function (socket) {var mySocket = socket() ; return mySocket; }]); Und dann in jedem Controller, verwende ich meine SocketFactory.on ('event_name', Funktion ... Und alles funktioniert gut, können Sie es testen? –
Ich habe in anderen versuchen mit ihm gemacht, aber wann Ich versuche, meinen Server zu verbinden: 'io.connect ('ws: //137.138.245.169: 8888/serverEx/random/websocket');'; es gibt mir den nächsten Fehler: 'Fehler beim Laden der Ressource: Der Server hat geantwortet ein Status von 404 (nicht gefunden) http: //137.138.245.169: 8888/socket.io /? EIO = 3 & transport = polling & t = LIWPK4v'. Es verbindet sich nicht, ich fragte die andere Methode, weil ich denke, dass es fortgeschrittener war , da dies sogar nicht verbindet. –