本文共 1153 字,大约阅读时间需要 3 分钟。
Netty学习
Netty结合SpringBoot、FastDFS和Html5实现聊天应用项目
Netty+SpringBoot+FastDFS+Html5实现聊天App,项目介绍
Netty+SpringBoot+FastDFS+Html5实现聊天App,项目github链接
本章练习完整代码链接
IO编程与NIO编程
传统IO编程性能分析
传统IO编程模型在客户端较少的情况下运行良好,但当业务需要支持成千上万的客户端连接时,传统IO模型可能不再适用。传统IO模型的关键问题在于每个连接创建后需要一个独立的线程来处理,这样会导致线程资源受限、线程切换效率低下以及IO读写效率不高的问题。
线程资源受限:大量线程处于阻塞状态会造成资源浪费 线程切换效率低下:固定CPU核数下频繁线程切换导致性能下降 IO效率不高:以字节为单位读写效率较低 NIO编程的优势
NIO通过selector批量处理连接,减少线程数量,提升效率。
线程资源优化:避免为每个连接创建独立线程,而是将连接绑定到固定的线程 线程切换效率提升:线程数量大幅减少,切换更高效 IO效率提升:以字节块为单位读写,提升处理效率 Hello Netty
服务器端实现
定义主从线程组:bossGroup用于接受连接,workerGroup处理业务 服务器启动类ServerBootstrap:配置主从线程、通道类型和子处理器 绑定端口并启动服务:绑定8088端口并同步启动 关闭优雅 Shutdown:关闭主从线程组 初始化器实现
创建子处理器:HelloServerInitializer继承ChannelInitializer 注册编解码器:HttpServerCodec用于处理HTTP协议 自定义助手类:CustomHandler处理响应 消息处理逻辑:读取客户端消息并返回固定响应 Netty聊天小练习
服务器端实现
定义主从线程组:创建mainGroup和subGroup 服务器启动:使用ServerBootstrap配置通道和子处理器 WebSocket协议支持:HttpServerCodec、ChunkedWriteHandler和HttpObjectAggregator 路由配置:WebSocketServerProtocolHandler指定路由 自定义消息处理:ChatHandler处理TextWebSocketFrame 客户端实现
WebSocket连接:客户端连接ws://192.168.1.4:8088/ws 消息发送和接收:通过JavaScript实现发送消息和接收消息 消息显示:动态更新用户界面显示消息 测试
通过浏览器访问localhost:8088,验证服务器响应"hello netty~"
转载地址:http://kccfk.baihongyu.com/