使用 Netty 28 行代码做个网页聊天室,基于 ioGame

介绍

基于 ioGame 框架,用 28 行代码做一个简单的网页聊天室。

源码

github gitee
快速从零编写服务器完整示例 快速从零编写服务器完整示例

打开项目,进入 ChatApplication 并运行

聊天室代码

以下是聊天室的完整代码

public class ChatApplication {
    public static void main(String[] args) {
        DefaultExternalServerBuilder builder = DefaultExternalServer.newBuilder(10100);
        builder.setting().setMicroBootstrapFlow(new WebSocketMicroBootstrapFlow() {
            public void pipelineFlow(PipelineContext context) {
                super.httpHandler(context);
                super.websocketHandler(context);
                context.addLast(new SimpleChannelInboundHandler<TextWebSocketFrame>() {
                    static final ChannelGroup channelGroup = new DefaultChannelGroup(GlobalEventExecutor.INSTANCE);
                    
                    public void channelActive(ChannelHandlerContext ctx) throws Exception {
                        super.channelActive(ctx);
                        channelGroup.add(ctx.channel());
                    }
                    
                    protected void channelRead0(ChannelHandlerContext ctx, TextWebSocketFrame msg) {
                        var message = String.format("[user:%s]:[%s]", ctx.channel().id().asShortText(), msg.text());
                        channelGroup.writeAndFlush(new TextWebSocketFrame(message));
                    }
                });
            }
        });

        new NettyRunOne()
                .setExternalServer(builder.build())
                .startup();
    }
}

测试图

启动服务器 ChatApplication 类后,我们打开在线 WebSocket 测试工具,多启动几个页面,就可以发送消息了。这样一个简单的聊天室就完成了。

测试连接 ws://127.0.0.1:10100/websocket

WebSocket 测试工具
https://www.wetools.com/websocket
http://wstool.js.org/

使用 Netty 28 行代码做个网页聊天室,基于 ioGame_第1张图片

使用 Netty 28 行代码做个网页聊天室,基于 ioGame_第2张图片

使用 Netty 28 行代码做个网页聊天室,基于 ioGame_第3张图片

小结

使用 ioGame 做网络编程,真是太方便了。

ioGame网络游戏服务器框架 (yuque.com)

ioGame 介绍

  • 无锁异步化、事件驱动的架构设计;轻量级,无需依赖任何第三方中间件或数据库就能支持集群、分布式
  • 通过 ioGame 可以很容易的搭建出一个集群无中心节点、集群自动化、多进程的分步式游戏服务器
  • 包体小、启动快、内存占用少、更加的节约、无需配置文件、提供了优雅的路由访问权限控制
  • 让开发者使用一套业务代码,无需改动,支持多种连接方式:WebSocket、TCP、UDP
  • 让开发者用一套业务代码,能轻松切换和扩展不同的通信协议:Protobuf、JSON
  • 近原生的性能;业务框架在单线程中平均每秒可以执行 1152 万次业务逻辑
  • 代码即联调文档、JSR380验证、断言 + 异常机制 = 更少的维护成本
  • 框架具备智能的同进程亲和性;开发中,业务代码可定位与跳转
  • 架构部署灵活性与多样性:既可相互独立,又可相互融合
  • 可同时与同类型的多个游戏逻辑服通信并得到数据
  • 逻辑服之间可相互跨进程、跨机器进行通信
  • 支持玩家对游戏逻辑服进行动态绑定
  • 能与任何其他框架做融合共存
  • 对 webMVC 开发者友好
  • 无 spring 强依赖
  • 零学习成本

你可能感兴趣的:(java,服务器)