SockJS over stomp using angular2 and spring boot

SockJS over stomp using angular2 and spring boot

我想在我的项目中实现一个 websocket 来做一些通知

这是我在我的项目中配置的网络套接字spring启动

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

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/hello").setAllowedOrigins("*").withSockJS();
    }

在我的控制器中我有这个方法:

@MessageMapping("/hello")
    @SendTo("/topic/templatesWS")
    public void TemplatesWebSocket() {
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("calling juste");
    }

在我的客户端页面 index.html 我添加了这个

<script src="//cdn.jsdelivr.net/sockjs/1/sockjs.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/stomp.js/2.3.3/stomp.js"></script>

在我的组件 angular2 中,我正在使用这个

declare let SockJS;
        declare let Stomp;


        var socket = new SockJS('http://localhost:8080/hello');
        socket.ono
        var stompClient = Stomp.over(socket);
            stompClient.connect({}, function(frame) {
            console.log('Connected: ' + frame);
            stompClient.subscribe('http://localhost:8080/template/topic/templatesWS', function(greeting) {
                console.log("from from", greeting);
            });
        }, function (err) {
            console.log('err', err);
        });

如何调用方法 TemplatesWebSocket()

检查我刚刚上传的这个例子: https://github.com/mtrojahn/spring-boot-websocket

我想你的意思是向服务器发送命令并得到响应,对吧?上面的示例涵盖了对客户端发送的命令的响应以及发送给客户端的周期性消息。

您可能正在寻找这样的东西:

stompClient.client.send("/app/somecommand", {}, "");

希望对您有所帮助。