首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

《整合 Spring Boot 和 Netty 实现 WebSocket》 代码写的太完美了!存一个!

后端 6.55KB 14 需要积分: 1
立即下载

资源介绍:

《整合 Spring Boot 和 Netty 实现 WebSocket》 代码写的太完美了!存一个! 资源来自:https://blog.csdn.net/dot_life/article/details/136575529
package io.renren.modules.test.nettyweb; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import io.netty.channel.Channel; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import io.netty.handler.codec.http.websocketx.TextWebSocketFrame; import io.netty.util.AttributeKey; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import org.springframework.util.ObjectUtils; /** * @author dongliang7 * @projectName websocket-parent * @ClassName WebSocketHandler.java * @description: TODO * @createTime 2023年02月06日 16:44:00 */ @Component @ChannelHandler.Sharable public class WebSocketHandler extends SimpleChannelInboundHandler { private static final Logger log = LoggerFactory.getLogger(NettyServer.class); /** * 一旦连接,第一个被执行 */ @Override public void handlerAdded(ChannelHandlerContext ctx) throws Exception { log.info("有新的客户端链接:[{}]", ctx.channel().id().asLongText()); // 添加到channelGroup 通道组 NettyConfig.getChannelGroup().add(ctx.channel()); } /** * 读取数据 */ @Override protected void channelRead0(ChannelHandlerContext ctx, TextWebSocketFrame msg) throws Exception { log.info("服务器收到消息:{}", msg.text()); // 获取用户ID,关联channel JSONObject jsonObject = JSONUtil.parseObj(msg.text()); String uid = jsonObject.getStr("uid"); String touid = jsonObject.getStr("touid"); NettyConfig.getChannelMap().put(uid, ctx.channel()); // 将用户ID作为自定义属性加入到channel中,方便随时channel中获取用户ID AttributeKey key = AttributeKey.valueOf("userId"); ctx.channel().attr(key).setIfAbsent(uid); // 回复消息 ctx.channel().writeAndFlush(new TextWebSocketFrame("服务器收到消息啦")); //然后找找要发给谁 Channel channelToUid = NettyConfig.getChannelMap().get(touid); if(!ObjectUtils.isEmpty(channelToUid)){ channelToUid.writeAndFlush(new TextWebSocketFrame(jsonObject.getStr("message")) ); } } @Override public void handlerRemoved(ChannelHandlerContext ctx) throws Exception { log.info("用户下线了:{}", ctx.channel().id().asLongText()); // 删除通道 NettyConfig.getChannelGroup().remove(ctx.channel()); removeUserId(ctx); } @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { log.info("异常:{}", cause.getMessage()); // 删除通道 NettyConfig.getChannelGroup().remove(ctx.channel()); removeUserId(ctx); ctx.close(); } /** * 删除用户与channel的对应关系 */ private void removeUserId(ChannelHandlerContext ctx) { AttributeKey key = AttributeKey.valueOf("userId"); String userId = ctx.channel().attr(key).get(); NettyConfig.getChannelMap().remove(userId); } }

资源文件列表:

nettyweb.zip 大约有7个文件
  1. NettyServer.java 2.91KB
  2. ProjectInitializer.java 2.01KB
  3. PushMsgService.java 453B
  4. PushMsgServiceImpl.java 957B
  5. TestController.java 2.25KB
  6. WebSocketHandler.java 3.21KB
  7. NettyConfig.java 1.81KB
0评论
提交 加载更多评论
其他资源 AndroidStudio期末设计天气预报APP源代码+实验报告
​安卓APP期末设计作业 项目为https://www.bilibili.com/video/BV1QE411i7oQ/?spm_id_from=333.999.0.0&vd_source=30298dec9326e02d1a6336b519833fc4 实验报告包含背景、可行性分析、系统设计与实施和开发设计总结 GradleVersion为5.1.1
AndroidStudio期末设计天气预报APP源代码+实验报告 AndroidStudio期末设计天气预报APP源代码+实验报告 AndroidStudio期末设计天气预报APP源代码+实验报告
纯netty,没有websocket
纯netty,没有websocket
Qt学习记录(十)项目:数字炸弹/猜数字游戏
Qt学习记录(十)项目:数字炸弹/猜数字游戏 新手项目,佬们多多包含
计算机组成原理实验 8位可控加减法电路设计,原码一位乘法器设计,MIPS运算器设计,汉字字库存储芯片扩展实验,寄存器文件设
8位可控加减法电路设计,原码一位乘法器设计,MIPS运算器设计,汉字字库存储芯片扩展实验,寄存器文件设计,微程序地址转移逻辑设计.
计算机组成原理实验
8位可控加减法电路设计,原码一位乘法器设计,MIPS运算器设计,汉字字库存储芯片扩展实验,寄存器文件设

计算机组成原理实验
8位可控加减法电路设计,原码一位乘法器设计,MIPS运算器设计,汉字字库存储芯片扩展实验,寄存器文件设

计算机组成原理实验
8位可控加减法电路设计,原码一位乘法器设计,MIPS运算器设计,汉字字库存储芯片扩展实验,寄存器文件设
QT利用QMovie实现动态加载、等待提示框
有时候要进行某项后台处理,但后台处理时间很长,需要提示用户等待,这时候做一个动态等待窗口,可以清晰展示当前操作的状态,以便用户能够理解和接受。本实例实现方式为获取一张gif的资源图,然后使用QMovie 在一个QLabel 控件上加载显示gif的waiting等待动态。
C# 程序集的加载和卸载
帖子地址:https://blog.csdn.net/qq_38693757/article/details/140437283?spm=1001.2014.3001.5502
numpy for android编译配置补丁
python-for-android打包的apk,安装到android设备中不能使用numpy;应用此补丁可以修正numpy的编译配置,使打包的apk安装到android设备中可以正常使用numpy。
IxChariot测速工具
IxChariot测速工具