netty-websocket-spring-boot
基于Netty实现的websocket消息推送,单独发送信息,群发信息

| 事件 |
事件注解 |
应用场景 |
| 握手前 |
@HandshakeBefore |
认证、鉴权 |
| 连接成功 |
@OnOpen |
-- |
| 收到消息 |
@OnMessage |
-- |
| 连接关闭 |
@OnClose |
|
| 异常 |
@OnError |
异常捕获 |
| 心跳超时 |
@OnEvent |
剔除失效连接 |
| 参数 |
@HandshakeBefore |
@OnOpen |
@OnClose |
@OnMessage |
@OnEvent |
@OnError |
| HttpHeaders |
√ |
√ |
√ |
√ |
√ |
√ |
| Session |
√ |
√ |
√ |
√ |
√ |
√ |
| @PathParam |
√ |
√ |
√ |
√ |
√ |
√ |
| String(消息内容) |
× |
× |
× |
√ |
× |
× |
| Throwable |
× |
× |
× |
× |
× |
√ |
| Object(事件) |
× |
× |
× |
× |
√ |
× |
<dependency>
<groupId>com.niezhiliang</groupId>
<artifactId>netty-websocket-spring-boot-starter</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
@WsServerEndpoint(value = "/websocket/{uid}/{arg}")
public class ServerEndpoint {
@HandshakeBefore
public void before (HttpHeaders headers) {
System.out.println("before");
}
/**
* 用户连接时触发
* @param session
*/
@OnOpen
public void open(Session session, @PathParam (value="uid") String uid, @PathParam String arg){
System.out.println("open");
session.sendText("hello client");
}
/**
* 收到信息时触发
* @param message
*/
@OnMessage
public void onMessage(Session session,String message){
System.out.println("message:" + message);
session.sendText("server: " + message);
}
/**
* 连接关闭触发
*/
@OnClose
public void onClose(){
System.out.println("close " + LocalDateTime.now());
}
/**
* 发生错误时触发
* @param session
* @param e
*/
@OnError
public void onError(Session session, Throwable e) {
System.out.println("onError");
}
/**
* 发生事件时触发
* @param session
* @param evt
*/
@OnEvent
public void onEvent(Session session, Object evt) {
if (evt instanceof IdleStateEvent) {
// 心跳事件处理
}
}
}
- Netty
- 自定义注解修饰Bean,并注入容器
- 扫描并回调自定义注解修饰方法
- 自动装配Starter
- 后置处理器
SmartInitializingSingleton
- 适配器模式
- 方法参数解析
- 路由匹配、请求路由参数获取

