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