Netty游戏服务器二
上节我们写个server主类,那么发现什么事情都干不了,是的,我们还没有做任何的业务处理。
接着我们开始写处理客户端连接,发送接收数据的类ServerHandler。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | public class ServerHandler extends ChannelHandlerAdapter{ @Override public void channelActive(ChannelHandlerContext ctx) throws Exception //当客户端连上服务器的时候会触发此函数 { System.out.println( "clinet:" + ctx.channel().id() + " join server" ); } @Override public void channelInactive(ChannelHandlerContext ctx) throws Exception //当客户端断开连接的时候触发函数 { System.out.println( "clinet:" + ctx.channel().id() + " leave server" ); //User.onlineUser.remove(LoginDispatch.getInstance().user); } @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception //当客户端发送数据到服务器会触发此函数 { /*SocketModel message = (SocketModel) msg; switch (message.getType()) { case TypeProtocol.TYPE_LOGIN: LoginDispatch.getInstance().dispatch(ctx, message); break; case TypeProtocol.TYPE_WIZARD: WizardDispatch.getInstance().dispatch(ctx, message); break; case TypeProtocol.TYPE_USER: UserDispatch.getInstance().dispatch(ctx, message); break; case TypeProtocol.TYPE_BATTLE: BattleDispatch.getInstance().dispatch(ctx, message); default: break; } /*<br> 这里我先把代码注释掉,现在还没讲到 */ <br> */ } @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { //cause.printStackTrace(); } } |
写完服务器主要的业务处理类,接着我们要把这个类的对象添加到服务器Channel的pipeline中。
在之前我们写的GameServer中,添加
1 | ch.pipeline().addLast( new ServerHandler()); |
1 2 3 4 5 6 7 8 9 10 | ServerBootstrap b = new ServerBootstrap(); //server启动管理配置 b.group(bossGroup, workGroup) .channel(NioServerSocketChannel. class ) .option(ChannelOption.SO_BACKLOG, 1024 ) //最大客户端连接数为1024 .childHandler( new ChannelInitializer<SocketChannel>() { @Override protected void initChannel(SocketChannel ch) throws Exception { ch.pipeline().addLast( new ServerHandler()); } }); |
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· C# 13 中的新增功能实操
· Ollama本地部署大模型总结
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(4)
· 卧槽!C 语言宏定义原来可以玩出这些花样?高手必看!
· langchain0.3教程:从0到1打造一个智能聊天机器人