Ist es möglich, Stomp über Socks ohne MVC zu verwenden. So würde ich gerne in Tomcat Frühling ruhen Schnittstelle haben, und eckig2 Anwendung ausgeführt von Express.Spring Boot Rest und Angular2 mit Websocket (Stampf über Socks)
WebSocketConfig.java
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
// the endpoint for websocket connections
registry.addEndpoint("/portfolio").setAllowedOrigins("*").withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.setApplicationDestinationPrefixes("/app");
config.enableSimpleBroker("/topic");
}
}
SocketController.java
@Controller
public class SocketController {
@Autowired
private SimpMessagingTemplate template;
public SocketController() {
int a = 5;
}
@MessageMapping("/greeting")
public String handle(String greeting) {
return "[" + "greeting" + ": " + greeting;
}
}
und Typoskript Code:
. . .
constructor() {
var socket = new SockJS('http://localhost:8080/portfolio');
this.stompClient = Stomp.over(socket);
this.stompClient.connect("guest", "guest", function(frame) {
console.log('Connected: ' + frame);
this.stompClient.subscribe('http://localhost:8080/topic/greeting', function(greeting) {
console.log("from from", greeting);
});
}, function (err) {
console.log('err', err);
});
}
. . .
send() {
this.stompClient.send("http://localhost:8080/app/greeting", {}, JSON.stringify({ 'name': "kitica" }));
}
. . .
aber aus irgendeinem Grund nicht funktioniert .. in der Konsole I Ausgabe:
Opening Web Socket...
stomp.js:134 Web Socket Opened...
stomp.js:134 >>> CONNECT
login:guest
passcode:guest
accept-version:1.1,1.0
heart-beat:10000,10000
stomp.js:134 <<< CONNECTED
version:1.1
heart-beat:0,0
stomp.js:134 connected to server undefined
activity-socket.ts:17 Connected: CONNECTED
heart-beat:0,0
version:1.1
und wenn ich ich
bekommen senden>>> SEND
destination:http://localhost:8080/app/greeting
content-length:17
{ "name": "kitica"}
, aber die Nachricht kommt nie zum Abonnenten zurück.
angular2 ist auf Port 8001 und Federauflage ist auf 8080
Wenn Sie es in JS verwenden können, können Sie es in Angular2 verwenden. –
ich Frage mit Codebeispiel aktualisiert habe ich versucht haben, ist diese entsprechend ihrer Dokumentation –
Wie haben Sie sockJS iun Ihre angular2 App hinzufügen, bitte? –