1、smart-http 简介

smart-http 是一款可编程式HTTP利用微内核。它是目前市面上为数不多的做到严格准守 RFC2616 标准,又兼顾卓越性能的 Http 服务器。

smart-http 齐全建设在自研的通信框架 smart-socket 之上,放弃了其纯正的国产化血统。我的项目定位对标的是 nginx,高性能、轻量化是其谋求和保持的指标。

严格意义上 smart-http 算不上是一个框架,它更像一个工具类库。开发人员能够基于它封装出符合特定场景的利用框架或解决方案。

模块介绍

模块阐明代码量
smart-http-common根底通用模块,包含枚举、日志、工具类2300+
smart-http-clientHTTP Client编解码和响应式编程设计1200+
smart-http-serverHTTP Server和WebSocket的编解码和应用层接口设计2600+
smart-http-restful基于smart-http-server的简易版 MVC模块(实验性380+
smart-http-test单测模块1200+

2、 版本更新

Maven

<dependency>    <groupId>org.smartboot.http</groupId>    <artifactId>smart-http-server</artifactId>    <version>1.1.20</version></dependency>

本次更新内容

  1. smart-socket 降级至 1.6.1
  2. HttpRouteHandler 反对自定义默认处理器。
  3. restful 模块新个性:

    • 反对 classpath 门路下的前端动态资源文件加载。
    • 新增 inspect 个性用于 Http 申请的预处理。

3、疾速上手

3.1 HTTP 服务端

public class SimpleSmartHttp {    public static void main(String[] args) {        HttpBootstrap bootstrap = new HttpBootstrap();        bootstrap.httpHandler(new HttpServerHandler() {            @Override            public void handle(HttpRequest request, HttpResponse response) throws IOException {                response.write("hello smart-http<br/>".getBytes());            }        }).setPort(8080).start();    }}

3.2 WebSocket 服务端

public class WebSocketDemo {    public static void main(String[] args) {        //1. 实例化路由Handle        WebSocketRouteHandler routeHandle = new WebSocketRouteHandler();        //2. 指定路由规定以及申请的解决实现        routeHandle.route("/", new WebSocketDefaultHandler() {            @Override            public void handleTextMessage(WebSocketRequest request, WebSocketResponse response, String data) {                response.sendTextMessage("承受到客户端音讯:" + data);            }        });        // 3. 启动服务        HttpBootstrap bootstrap = new HttpBootstrap();        bootstrap.webSocketHandler(routeHandle);        bootstrap.start();    }}

3.3 Http客户端

public class HttpGetDemo {    public static void main(String[] args) {        HttpClient httpClient = new HttpClient("www.baidu.com", 80);        httpClient.connect();        httpClient.get("/")                .onSuccess(response -> System.out.println(response.body()))                .onFailure(Throwable::printStackTrace)                .send();    }}

3.4 Restful

<dependency>    <groupId>org.smartboot.http</groupId>    <artifactId>smart-http-restful</artifactId>    <version>${smarthttp.version}</version></dependency>
@Controllerpublic class RestfulDemo {    @RequestMapping(value = "/hello", method = RequestMethod.GET)    public String helloworld() {        return "hello world";    }    public static void main(String[] args) throws Exception {        RestfulBootstrap bootstrap = RestfulBootstrap.getInstance().controller(RestfulDemo.class);        bootstrap.bootstrap().setPort(8080).start();    }}

smartboot开源组织,一个容易被误认为是在“反复造轮子”的低调组织。曾取得 2020 年度 OSC 中国开源我的项目「优良 Gitee 组织 」荣誉。

该组织内的明星我的项目包含:

  • smart-socket
    历时5年精炼出2千多行代码,轻松实现百万级长连贯的 AIO 通信框架。
  • smart-http
    基于 smart-socket 实现的 HTTP/1.1 web服务。
  • smart-servlet
    基于 smart-http 实现的 Servlet 3.1 容器服务。
  • smart-broker
    基于 smart-socket 实现的 MQTT 3.1.1/5.0 Broker 服务。
  • smart-flow
    一款具备可观测性的轻量级业务编排框架。

组织地址:https://smartboot.tech/
代码仓库:https://gitee.com/smartboot


关注「三刀」公众号

开源不易,且行且珍惜。

本文由mdnice多平台公布