netty在真实项目里的应用
2023-02-18 16:23:48 时间
最近有同事问我,我们项目里netty到底是怎么用的?他最近要面试,简历里面提到了netty,但是因为没有用过,也不知道该怎么回答面试官。于是蛋蛋给他做了一个关于netty技术的分享。
要知道,一般的纯软件项目通过http通信就已经足够了,一个spring吃遍天,基本用不到netty这个底层通信框架。
而我们是物联网项目,硬件端与软件端是通过tcp自定义协议进行通信的,所以我们需要选择一款tcp通信框架来做底层的通信。于是自然而然选择了这款鼎鼎大名的nio异步通信框架,它号称支持单节点百万连接。
这里介绍下我们的通信细节,服务端与硬件端的通信报文都是utf8编码的字符串,然后以%start%开始,以%end%结尾,中间是业务json串。
服务端接收到消息(字节数组),先进行字符串解码,然后进行字符串截取(去掉开始结束标志),然后解析json,并把不用类型的业务报文转发给不同的业务处理。
服务端发送消息(主动发送消息),需要对消息json字符串拼接开始结束标志,然后做字符串编码,转成字节数组后写到通道里发送出去。
这里面服务端接收消息比较好处理,难的是服务端主动发送消息,服务端主动发送消息需要保留客户端连接对象,然后根据不同的业务向不同的客户端发送。
我们的项目里是客户端会定时发送心跳消息,当接受到客户端的心跳消息,我们把客户端连接对象存储到一个map里面,key取客户端的业务唯一标识。
大概的使用就是这个情况,以供参考。
相关文章
- SourceTree使用详解-摘录收藏
- C#笔记 picturebox功能实现(滚动放大,拖动)
- 【论文笔记】R-CNN系列之代码实现
- 【论文笔记】R-CNN系列之论文理解
- Jmeter扩展组件开发(10) - 自定义扩展函数助手的开发
- 【论文笔记】AlexNet
- Jmeter扩展组件开发(9) - 解决空指针问题
- 【论文笔记】轻量级网络MobileNet
- Apache AB(1) - 快速使用
- Jmeter扩展组件开发(8) - 函数助手扩展开发demo
- C++笔记(11)工厂模式
- Jmeter扩展组件开发(6) - 将响应结果数据显示到查看结果树中
- c#笔记(3) 委托回调
- Jmeter扩展组件开发(5) - 初始化方法的作用与实现
- C#笔记 线扫相机利用串口通信设置曝光
- TensorRT加速(VS+opencv4.5)
- Jmeter扩展组件开发(4) - 自定义参数的实现
- Jmeter扩展组件开发(3) - 实现方法
- C#笔记(1)窗体
- Jmeter扩展组件开发(2) - 扩展开发第一个demo的实现