首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >大家好,我发布了一个开源项目,叫Magician,是一个网络编程包

大家好,我发布了一个开源项目,叫Magician,是一个网络编程包

原创
作者头像
贝克街的天才
修改2021-07-12 09:48:54
修改2021-07-12 09:48:54
6650
举报
文章被收录于专栏:MagicianMagician

Magician是一个异步非阻塞的网络编程包,使用起来也极其的简单。

一、创建TCP服务(默认使用http解码器)

创建Handler

代码语言:java
复制
public class DemoHandler implements MagicianHandler<MagicianRequest> {

    @Override
    public void request(MagicianRequest magicianRequest) {
        // 响应数据
        magicianRequest.getResponse()
                .sendJson(200, "{'status':'ok'}");
    }
}

创建服务(默认线程池配置)

代码语言:java
复制
Magician.createTCPServer()
                    .handler("/", new DemoHandler())
                    .bind(8080);

创建服务(自定义线程池配置)

代码语言:java
复制
EventGroup ioEventGroup = new EventGroup(1, Executors.newCachedThreadPool());
EventGroup workerEventGroup = new EventGroup(10, Executors.newCachedThreadPool());

// 当前EventRunner没任务的时候,允许从其他EventRunner窃取任务
workerEventGroup.setSteal(EventEnum.STEAL.YES);

Magician.createTCPServer(ioEventGroup, workerEventGroup)
                    .handler("/", new DemoHandler())
                    .bind(8080);

创建服务(监听多端口)

代码语言:java
复制
// 监听几个端口,ioEventGroup的第一个参数就写几
EventGroup ioEventGroup = new EventGroup(2, Executors.newCachedThreadPool());
EventGroup workerEventGroup = new EventGroup(10, Executors.newCachedThreadPool());

// 当前EventRunner没任务的时候,允许从其他EventRunner窃取任务
workerEventGroup.setSteal(EventEnum.STEAL.YES);

TCPServer tcpServer = Magician
                         .createTCPServer(ioEventGroup, workerEventGroup)
                         .handler("/", new DemoHandler())

tcpServer.bind(8080);
tcpServer.bind(8088);

二、创建WebSocket

只需要在创建http服务的时候加一个handler即可

代码语言:java
复制
Magician.createTCPServer()
                    .handler("/", new DemoHandler())
                    .webSocketHandler("/websocket", new DemoSocketHandler())
                    .bind(8080);

三、创建UDP服务

代码语言:java
复制
Magician.createUdpServer()
                .handler(outputStream -> {
                    // outputStream 是ByteArrayOutputStream类型的
                    // 它是客户端发过来的数据,自行解析即可
                }).bind(8088);

除了这种写法,也可以单独创建handler,在这里add进去

TFB测试结果

持续优化中
持续优化中

官网:http://magician-io.com

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、创建TCP服务(默认使用http解码器)
    • 创建Handler
    • 创建服务(默认线程池配置)
    • 创建服务(自定义线程池配置)
    • 创建服务(监听多端口)
  • 二、创建WebSocket
  • 三、创建UDP服务
  • TFB测试结果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档