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)
压力测试
Maven引用:
com.generallycloud baseio-all 3.2.6.RELEASE
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}