前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >netty在真实项目里的应用

netty在真实项目里的应用

作者头像
蛋蛋编程手记
发布2022-12-12 21:06:39
5650
发布2022-12-12 21:06:39
举报
文章被收录于专栏:蛋蛋编程手记蛋蛋编程手记

最近有同事问我,我们项目里netty到底是怎么用的?他最近要面试,简历里面提到了netty,但是因为没有用过,也不知道该怎么回答面试官。于是蛋蛋给他做了一个关于netty技术的分享。

要知道,一般的纯软件项目通过http通信就已经足够了,一个spring吃遍天,基本用不到netty这个底层通信框架。

而我们是物联网项目,硬件端与软件端是通过tcp自定义协议进行通信的,所以我们需要选择一款tcp通信框架来做底层的通信。于是自然而然选择了这款鼎鼎大名的nio异步通信框架,它号称支持单节点百万连接。

这里介绍下我们的通信细节,服务端与硬件端的通信报文都是utf8编码的字符串,然后以%start%开始,以%end%结尾,中间是业务json串。

服务端接收到消息(字节数组),先进行字符串解码,然后进行字符串截取(去掉开始结束标志),然后解析json,并把不用类型的业务报文转发给不同的业务处理。

服务端发送消息(主动发送消息),需要对消息json字符串拼接开始结束标志,然后做字符串编码,转成字节数组后写到通道里发送出去。

这里面服务端接收消息比较好处理,难的是服务端主动发送消息,服务端主动发送消息需要保留客户端连接对象,然后根据不同的业务向不同的客户端发送。

我们的项目里是客户端会定时发送心跳消息,当接受到客户端的心跳消息,我们把客户端连接对象存储到一个map里面,key取客户端的业务唯一标识。

大概的使用就是这个情况,以供参考。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 蛋蛋编程手记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档