【发布时间】:2016-12-29 01:18:15
【问题描述】:
我想在我的项目中实现一个 websocket 来做一些通知
这是我的 projet spring boot 中的配置 web socket
@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() 方法
【问题讨论】:
-
我认为 subscribe() 参数应该是简单的 '/topic/templatesWS'
-
事件后如何向服务器发送数据或获取对象?
-
我解决了这个错误我有一些配置 websocket 安全性阻止连接但是行代码 stompClient.subscribe 没有从控制器 TemplatesWebSocket() 调用该方法我该如何调用它
标签: angular spring-boot websocket sockjs