# netty-websocket-spring-boot
## 前言
该项目之前是基于`spring-boot-starter-websocket`做的一个Demo,start还不错, 偶然间看到大佬基于
Netty实现了一个轻量级高性能的[Netty-Websocket框架](https://github.com/YeautyYE/netty-websocket-spring-boot-starter),
而且用法和`spring-boot-starter-websocket`一样,注解驱动,看到后感触很大, 觉得他很牛逼,看了下他的源码,
大致原理和技术知道了以后,我之前也看过很多spring相关源码,觉得我应该也能写出来,于是就强迫自己重写了该项目,也算是
对源码的巩固,太久不看,确实很多又忘了。
## 介绍
基于Netty实现了大部分spring-websocket的功能,从下图能知道Spring-Websocket使用起来非常方便,但是性能方面相较于Netty实现的WebScoket性能会有
些差距,但是Netty做Websocket复杂度更高,为了让Netty实现WebSocket使用更简单,于是开发了这个starter,该starter使用起来可以和
spring-websocket一样简单,而且使用语法尽可能的和Spring-Websocket一致。
![演示gif](./imgs/img.png)
## 使用
### 支持事件类型
| 事件 | 事件注解 | 应用场景 |
|------|------|-----|
| 握手前 | @HandshakeBefore | 认证、鉴权 |
| 连接成功 | @OnOpen | -- |
| 收到消息 | @OnMessage | -- |
| 连接关闭 | @OnClose | |
| 异常 | @OnError | 异常捕获 |
| 心跳超时 | @OnEvent | 剔除失效连接 |
### 注解方法支持的参数类型
| 参数 | @HandshakeBefore | @OnOpen | @OnClose | @OnMessage | @OnEvent | @OnError |
|--------------|---------------|-------------|------------|----------|----------|----------|
| HttpHeaders | √ | √ |√ | √ | √ | √ |
| Session | √ | √ |√ | √ | √ | √ |
| @PathParam | √ |√ |√ | √ | √ | √|
| String(消息内容) | × | × |× | √ | × | × |
| Throwable | × | × |× | × | × | √ |
| Object(事件) | × | × |× | × | √ | × |
添加maven依赖
```java
<dependency>
<groupId>com.niezhiliang</groupId>
<artifactId>netty-websocket-spring-boot-starter</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
```
```java
@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`
- 适配器模式
- 方法参数解析
- 路由匹配、请求路由参数获取
![演示gif](https://suyu-img.oss-cn-shenzhen.aliyuncs.com/demo.gif)
没有合适的资源?快使用搜索试试~ 我知道了~
Netty-WebSocket 与 Spring Boot 融合项目:实现高效通信,含丰富功能与示例.zip
共153个文件
gif:77个
java:32个
js:23个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 156 浏览量
2024-11-15
22:43:49
上传
评论
收藏 2.88MB ZIP 举报
温馨提示
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
资源推荐
资源详情
资源评论
收起资源包目录
Netty-WebSocket 与 Spring Boot 融合项目:实现高效通信,含丰富功能与示例.zip (153个子文件)
layui.css 59KB
layui.css 59KB
layer.css 14KB
layui.mobile.css 10KB
laydate.css 7KB
code.css 1KB
iconfont.eot 39KB
spring.factories 155B
demo.gif 2.15MB
59.gif 10KB
22.gif 10KB
24.gif 8KB
13.gif 7KB
16.gif 7KB
39.gif 6KB
64.gif 6KB
63.gif 6KB
50.gif 6KB
loading-0.gif 6KB
4.gif 6KB
1.gif 5KB
42.gif 5KB
71.gif 5KB
21.gif 5KB
20.gif 5KB
29.gif 5KB
70.gif 4KB
5.gif 4KB
17.gif 4KB
27.gif 4KB
9.gif 4KB
44.gif 4KB
11.gif 4KB
8.gif 4KB
3.gif 4KB
23.gif 4KB
34.gif 4KB
41.gif 4KB
38.gif 4KB
65.gif 3KB
32.gif 3KB
45.gif 3KB
7.gif 3KB
12.gif 3KB
26.gif 3KB
60.gif 3KB
2.gif 3KB
40.gif 3KB
25.gif 3KB
19.gif 3KB
66.gif 3KB
18.gif 3KB
46.gif 3KB
10.gif 3KB
28.gif 3KB
51.gif 3KB
57.gif 3KB
67.gif 3KB
0.gif 3KB
48.gif 3KB
43.gif 3KB
30.gif 2KB
61.gif 2KB
33.gif 2KB
69.gif 2KB
14.gif 2KB
47.gif 2KB
36.gif 2KB
49.gif 2KB
58.gif 2KB
6.gif 2KB
54.gif 2KB
53.gif 2KB
56.gif 2KB
62.gif 2KB
31.gif 2KB
55.gif 2KB
35.gif 2KB
15.gif 2KB
loading-2.gif 2KB
37.gif 1KB
68.gif 1KB
52.gif 777B
loading-1.gif 701B
1.gif 0B
admin.html 8KB
index.html 5KB
WebsocketServerEndpoint.java 5KB
SocketServer.java 4KB
NettyWebsocketServer.java 4KB
HttpRequestHandler.java 4KB
WebsocketActionDispatch.java 3KB
WebSocketAnnotationPostProcessor.java 3KB
MethodParamsBuild.java 2KB
ServerEndpoint.java 2KB
WebSocketController.java 2KB
WebSocketServerHandler.java 2KB
GenericHandler.java 1KB
PathParaMethodArgumentResolver.java 1KB
WebsocketProperties.java 1KB
共 153 条
- 1
- 2
资源评论
pk_xz123456
- 粉丝: 2092
- 资源: 1430
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功