使用带有 AngularJS(angular-websocket-service)和 Spring Boot 的 Web
Notify registered clients using Websockets with AngularJS (angular-websocket-service) and Spring Boot
我是AngularJS和FullStack开发的新手。我当前应用程序的体系结构已经设置好,最好不要更改(出于安全原因)。到目前为止,我可以使用angular-websocket-service向服务器发出消息。以下是前端服务的代码片段:
proxiMiamApp.service('WebSocketService', function ($websocket) {
var wsEndpoint = {};
this.openWsEndpoint = function () {
wsEndpoint = $websocket.connect("ws://localhost:9000/proximiamHandler");
console.log(wsEndpoint);
return wsEndpoint;
}
this.sendMessage = function(){
if($.isEmptyObject(this.wsEndpoint)){
this.openWsEndpoint();
}
eventUser = {
idEvent : '1',
idUser : '49'
};
wsEndpoint.register('/eventUser', function(){
console.log('Register OK!');
});
console.log('Ready!');
wsEndpoint.emit('/eventUser',eventUser);
}});
至于后端,我使用的是WebSocketHandler接口的实现:
@Controller
public class ProximiamHandler implements WebSocketHandler {
@Override
public void afterConnectionEstablished(WebSocketSession webSocketSession) throws Exception {
System.out.println("afterConntectionEstablished called");
}
@Override
public void handleMessage(WebSocketSession webSocketSession, WebSocketMessage<?> webSocketMessage) throws Exception {
System.out.println("handleMessage called");
// My code here...
}
@Override
public void handleTransportError(WebSocketSession webSocketSession, Throwable throwable) throws Exception {
System.out.println("handleTransportError called");
}
@Override
public void afterConnectionClosed(WebSocketSession webSocketSession, CloseStatus closeStatus) throws Exception {
System.out.println("afterConnectionClosed called");
}
@Override
public boolean supportsPartialMessages() {
return true;
}}
WebSocketHandler 的实现是通过 Spring WebSocketConfigurer 调用
的@Configuration
@EnableWebSocket
@Controller
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(myHandler(), "/proximiamHandler").setAllowedOrigins("*");
}
@Bean
public WebSocketHandler myHandler() {
return new ProximiamHandler();
}}
我的问题是:
- 是否可以使用此体系结构通知订阅的客户端?
- 如果是,我该怎么做?
- 有没有办法从服务器向订阅的客户端返回一些东西?(例如对象或字符串)
提前感谢您的帮助
是否可以使用此体系结构通知订阅的客户端?=> 是的。
如果是,我该怎么做?=> 基于 Spring Web 套接字 API,您必须保留通过 "afterConnectionBuilt" 回调传递给您的 WebSocketSession。 使用 Web 套接字会话的 sendMessage() API 向客户端发送通知。
有没有办法从服务器向订阅的客户端返回一些东西?(例如对象或字符串) => 你可以用JSON或XML格式化数据,并使用"WebSocketMessage"包装它并将其传递给客户端。
我从未在 Spring 上工作过,但是,我根据我对 Web 套接字的了解来回答这个问题。看看是否有帮助。
相关文章:
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- spring和angularJS(我得到了类似HTTP状态404的错误)
- Spring Ajax列表返回,但对象为空
- 使用 JQUERY AJAX (Spring MVC) 从控制器中删除
- 用Java/Struts/Spring项目实现Visual Captcha
- 在spring-boot中使用javascript在application.properties文件中获取值
- Javascript + Spring boot
- 使用带有 AngularJS(angular-websocket-service)和 Spring Boot 的 Web
- 使用 AngularJS 登录 Spring Boot $http.post
- 从Spring Boot控制器调用Javascript
- 使用Spring Boot在同一页面上重复提交表单
- 如何使用@requestMapping从JS到spring boot访问https协议
- Angular2的spring-boot项目结构
- 使用AngularJS和Spring Boot的Post基本认证语义
- 在node.js中上传文件,在spring boot中POST multipart
- 如何在Spring Boot中使用Backbone和REST进行身份验证
- Spring Boot Web静态资源
- 错误请求后请求在spring-boot和angularjs之间出现错误
- Spring Boot Google Maps SAXParseException