zoukankan      html  css  js  c++  java
  • Spring容器整合WebSocket

    原链接:http://blog.csdn.net/canot/article/details/52575054

    WebSocker是一个保持web客户端与服务器长链接的技术。这样在两者通信过程中如果服务器有消息发送给客户端,就无需等待web客户端发送一个请求了(HTTP协议是请求相应式,如果没有Web客户端的请求,服务器是无法对客户端做相应的)。

    单独的部署一个WebSocket服务器很简单,只需要几个注解即可。那么当在spring项目中如何使用WebSocket呢?也行你会想,没什么不同啊。一样通过WebSocket注解就可以了啊。但我们使用Spring的目的就是通过Spring的容器来管理Bean,将WebSocket独立出来如果WebSocket中需要用到Spring容器中的bean该怎么办?

    Spring 提供了两种将WebSocket部署在Spring容器中的方法:

    方法一:

    使用org.springframework.web.socket.server.standard.ServerEndpointExporter.ServerEndpointExporter类。在Spring容器中添加一个该类的实例:

    @Bean
        public ServerEndpointExporter serverEndpointExporter() {
            return new ServerEndpointExporter();
        }

    Spring容器会去扫描包,将WebSocket加入容器。此时对于WebSocket则使用Spring的注解:

    @ServerEndpoint(value="/getLocation",configurator = SpringConfigurator.class)
    @Component
    public class TransmissionLocationWebSocket {
       xxxx
    }

    SpringConfigurator.class 为Spring提供的一个类。通过这个类,该WebSocket中就可以注入Spring容器的bean。

    方法二:

    使用Spring封装的WebSocket接口TextWebSocketHandler。

    public class WebSocketHandler extends TextWebSocketHandler {
        /**
         * 连接成功时候
         */
        @Override
        public void afterConnectionEstablished(WebSocketSession session) throws Exception       { 
    
        }
         /**
          * 连接关闭时候
          */
        @Override
        public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception {
    
          }
    }

    将类添加到Spring容器中,并配置:

    @Override
        public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
            registry.addHandler(myHandler(), "/getLocation").setAllowedOrigins("*");
        }
    
        @Bean
        public WebSocketHandler myHandler() {
            return new WebSocketHandler();
        }

    Spring与WebScoket的配置即如上两个方法。

     
     
  • 相关阅读:
    如何去除文件的打开方式,恢复默认打开方式如何消除默认打开方式
    vbs和qtp一些脚本
    忘记oracle用户名密码怎么办?
    网关
    子网掩码的作用和设置方法
    三层交换机配置说明(华为S5700设置三个网段互通)
    QTP连接MYSQL数据库方法
    批量创建IP方法
    MongoDB中的一些坑( 2.4.10 版本)
    java的BASE64Encoder,BASE64Decoder加密与解密
  • 原文地址:https://www.cnblogs.com/yanqin/p/6705120.html
Copyright © 2011-2022 走看看