基于 Java NIO 的异步 IO 框架 BaseIO

Apache
Java
跨平台
2018-09-11
wk1111
BaseIO 正在参加 2019 年度最受欢迎开源中国软件评选,请投票支持!
BaseIO 在 2019 年度最受欢迎开源中国软件评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票赢奖品
已投票

BaseIO是基于java nio开发的一款可快速构建网络通讯项目的异步IO框架,其以简单易用的API和优良的性能深受开发者喜爱。

项目特色

  • 支持协议扩展,已知的扩展协议有:

    • Redis协议(仅作测试),示例:详见 {baseio-test}

    • LineBased协议(基于换行符的消息分割),示例:详见 {baseio-test}

    • FixedLength协议(固定长度报文头),支持传输文本和二进制数据

    • HTTP1.1协议(lite),示例: https://www.generallycloud.com/

    • WebSocket协议,示例: https://www.generallycloud.com/web-socket/chat/index.html

    • Protobase(自定义协议),支持传输文本和二进制数据及混合数据

  • 轻松实现断线重连(轻松实现心跳机制)

  • 支持SSL(jdkssl,openssl)

  • 压力测试

    • 超过200W QPS的处理速度(Http1.1,I7-4790,16.04.1-Ubuntu)  wrk压测

快速入门

  • Maven引用:

  <dependency>
  	<groupId>com.generallycloud</groupId>
  	<artifactId>baseio-all</artifactId>
  	<version>3.2.6.RELEASE</version>
  </dependency>
  • Simple Server:

  public static void main(String[] args) throws Exception {
      IoEventHandle eventHandle = new IoEventHandle() {
          @Override
          public void accept(NioSocketChannel channel, Frame frame) throws Exception {
              FixedLengthFrame f = (FixedLengthFrame) frame;
              frame.write("yes server already accept your message:", channel.getCharset());
              frame.write(f.getReadText(), channel.getCharset());
              channel.flush(frame);
          }
      };
      ChannelContext context = new ChannelContext(8300);
      ChannelAcceptor acceptor = new ChannelAcceptor(context);
      context.addChannelEventListener(new LoggerChannelOpenListener());
      context.setIoEventHandle(eventHandle);
      context.setProtocolCodec(new FixedLengthCodec());
      acceptor.bind();
  }
  • Simple Client:

  public static void main(String[] args) throws Exception {
      IoEventHandle eventHandle = new IoEventHandle() {
          @Override
          public void accept(NioSocketChannel channel, Frame frame) throws Exception {
              FixedLengthFrame f = (FixedLengthFrame) frame;
              System.out.println();
              System.out.println("____________________" + f.getReadText());
              System.out.println();
          }

      };
      ChannelContext context = new ChannelContext(8300);
      ChannelConnector connector = new ChannelConnector(context);
      context.setIoEventHandle(eventHandle);
      context.addChannelEventListener(new LoggerChannelOpenListener());
      context.setProtocolCodec(new FixedLengthCodec());
      NioSocketChannel channel = connector.connect();
      FixedLengthFrame frame = new FixedLengthFrame();
      frame.write("hello server!", channel);
      channel.flush(frame);
      ThreadUtil.sleep(100);
      CloseUtil.close(connector);
  }

更多样例详见 {baseio-test}

的码云指数为
超过 的项目
加载中

评论(4)

w
wk1111 软件作者
项目已更名为FireNio: https://www.oschina.net/p/firenio
我是肥猫侠
试试
爽歪歪ES
给我一个不用netty的理由
w
wk1111 软件作者
性能不错,简单易用! 没找到回复评论的地方,这里回复下你@爽歪歪ES,首先netty优秀毋庸置疑,baseio相较于netty更加轻便,更易用,内置基础编解码,开箱即用,同时性能不逊于netty

暂无资讯

暂无问答

smart-socket是什么

smart-socket是什么 smart-socket文档地址 http://smartsocket.mydoc.io/?t=260338 码云地址: https://gitee.com/smartboot/smart-socket smart(百度翻译:聪明的;敏捷的;漂亮的;整齐的),...

2018/05/16 10:52
1K
0
使用 PHP 7 给 Web 应用加速

##PHP 20周年了!?? **PHP 首发通告,1995年6月8日** **发布于 COMP.INFOSYSTEMS.WWW.AUTHORING.CGI** 主题:正式宣布:个人主页工具(Personal Home Page Tools) 正式宣布个人主页工具(...

2015/11/18 11:04
78
1

没有更多内容

加载失败,请刷新页面

没有更多内容

返回顶部
顶部