zoukankan      html  css  js  c++  java
  • WebSocket相关注解使用说明【SpringBoot篇1】

    注解说明

    @ServerEndpoint

    当ServerEndpointExporter类通过Spring配置进行声明并被使用,它将会去扫描带有@ServerEndpoint注解的类
    被注解的类将被注册成为一个WebSocket端点
    所有的配置项都在这个注解的属性中 ( 如:@ServerEndpoint("/ws") 

    后端使用@ServerEndpoint创建websocket endpoint

    在使用@ServerEndpoint注解的时候,要把ServerEndpointExporter交给容器管理,这个Bean会自动注册声明的WebSocket endpoint;

    也就是说所有打了@ServerEndpoint注解的,都会被ServerEndpointExporter发现并注册。

    备注:如果使用war包部署,就不必做此步骤,因为它将由容器自己提供和管理

    @Configuration
    @ConditionalOnWebApplication
    public class WebSocketAutoConfig {
        @Bean
        public ServerEndpointExporter endpointExporter() {
            return new ServerEndpointExporter();
        }
    
        @Bean
        public MySpringConfigurator mySpringConfigurator() {
            return new MySpringConfigurator();
        }
    }

    @OnOpen

     当有新的WebSocket连接进入时,对该方法进行回调
     注入参数的类型:

      1. Session

      2. HttpHeaders

      3.ParameterMap

     @OnClose

    当有WebSocket连接关闭时,对该方法进行回调 注入参数的类型

      1.Session

    @OnError

     当有WebSocket抛出异常时,对该方法进行回调  
      注入参数的类型:

      1.Session

      2.Throwable

     @OnMessage

       当接收到字符串消息时,对该方法进行回调
       注入参数的类型:

      1.Session

      2.String  

    @OnBinary

      当接收到二进制消息时,对该方法进行回调
      注入参数的类型:

      1.Session

      2.byte[]

    @OnEvent

      当接收到Netty的事件时,对该方法进行回调
      注入参数的类型:

      1.Session

      2.Object

    配置

    所有配置想都在这个注解的属性中

    编号 属性 默认值 说明

    1

    path “/” WebSocket的path,也可以用value来设置
    2 host "0.0.0.0" WebSocket的host,“0.0.0.0”即是所有本地地址
    3 port 80 WebSocket绑定端口,如果为,则使用随机端口(端口获取可见多端点服务)
    4 bossLoopGroupThreads 0 bossEventLoopGroup的线程数
    5 workerLoopGroupThreads 0 workEventLoopGroup的线程数
    6 useCompressionHandler false 是否添加WebSocketServerCompressionHandler到pipline
    7 prefix "" 当不为空时,即是使用application.properties进行配置。
    8 optionConnectTimeouMillis 30000 与Netty的ChannelOption.CONNECT_TIMEOUT_MILLIS一致
    9 optionSoBacklog 128 与Netty的ChannelOption.SO_BACKLOG一致
    10 childOptionWriteSpinCount 16 与Netty的ChannelOption.WRITE_SPIN_COUNT一致
    11 childOptionWriteBufferHighWaterMark 64*1024

    与Netty的ChannelOption.WRITE_BUFFER_HIGH_WATER_MARK一致,

    但实际上是使用ChannelOption.WRITE_BUFFER_WATER_MARK

    12 childOptionWriteBufferLowWaterMark 32*1024

    与Netty的ChannelOption.WRITE_BUFFER_LOW_WATER_MARK一致,

    但实际上是使用 ChannelOption.WRITE_BUFFER_WATER_MARK

    13 childOptionSoRcvbuf -1(即未设置) 

    与Netty的ChannelOption.SO_RCVBUF一致

    14 childOptionSoSndbuf -1(即未设置)  与Netty的ChannelOption.SO_SNDBUF一致
    15 childOptionTcpNodelay true 与Netty的ChannelOption.TCP_NODELAY一致
    16 childOptionSoKeepalive false 与Netty的ChannelOption.SO_KEEPALIVE一致
    17 childOptionSoLinger -1 与Netty的ChannelOption.SO_LINGER一致
    18 childOptionAllowHalfClosure false 与Netty的ChannelOption.ALLOW_HALF_CLOSURE一致
    19 readerIdleTimeSeconds 0

    与IdleStateHandler中的readerIdleTimeSeconds一致,

    并且当它不为0时,将在pipeline中添加IdleStateHandler

    20 writerIdleTimeSeconds 0

    与IdleStateHandler中的writerIdleTimeSeconds一致,

    并且当它不为0时,将在pipeline中添加IdleStateHandler

    21 allIdleTimeSeconds 0

    与IdleStateHandler中的allIdleTimeSeconds一致,

    并且当它不为0时,将在pipeline中添加IdleStateHandler

    22 maxFramePayloadLength 65536

    最大允许帧载荷长度

     欢迎关注作者微信公众号

  • 相关阅读:
    SQLiteDatabase 源码
    SQLiteOpenHelper 源码
    Java同步机制总结--synchronized
    [Swift A]
    [Swift A]-问号&感叹号
    [Swift A]
    [Swift A]
    android 屏幕适配
    2014年度加班时间
    nodejs初学-----helloworld
  • 原文地址:https://www.cnblogs.com/zhanqing/p/15632750.html
Copyright © 2011-2022 走看看