🎉 smart-http v2.0 发布:HTTP2,这次它真的要来了

来源: 投稿
2024-11-07 09:05:00
AI总结

1、smart-http 简介

smart-http 是一款基于国产 AIO 通信框架 smart-socket 开发的 HTTP/1.1、HTTP/2.0 服务器。

除了极致轻量化和卓越的性能表现,smart-http 还拥有完整的 Web 服务能力:

  • HTTP Server

  • WebSocket Server

  • HTTP Client

  • WebSocket Client

  • 轻量级 MVC(实验性)

  • HTTP/2.0(内测中)

2、 版本更新

在国庆前的那一次发布中曾透露过,smart-http 即将开展 HTTP/2.0 的适配。如今一个多月过去了,终于在上个周末调通了主流程。

此次开发 HTTP/2.0 的过程中遇到了诸多挑战,整个经历如同挑战《黑神话》一周目这般艰难。每一个技术障碍都需要经过无数次的试验与调整,以寻找到有效的解决方案并予以克服。

我们有幸生活在一个技术迅速进步的时代,诸如大型语言模型这样的先进技术给予了 smart-http 极大的帮助。面对晦涩的技术文档和复杂的协议规定,借助 GPT 等智能助手可以高效地获得解答,这大大提高了我们的开发效率。相比之下,早期开发 HTTP/1.1时,不得不花费大量的时间和精力来研究和实践,才能逐步推进项目的发展。

目前 smart-http 对于 HTTP/2.0 的支持还停留在基本能用阶段,远未达到生产可用状态,存留了较多细节有待完善。作为一个还不太完善的新特性,原本并不适合以 v2.0 这样的版本号发布,顺延前一个版本号发布 v1.6.2 才是一种常规做法。

但考虑到 HTTP/2.0 对 smart-http 而言意义非凡,当初 smart-http v1.0 也是以一个不成熟的形态发布,并在之后的持续迭代中愈加完善。所以,v2.0 代表了 smart-http  的一个新起点。同时也便于用户通过 smart-http 的版本号,就能与其适配的 HTTP 协议版本联系起来。

近期我们会在文档中补充 HTTP/2.0 的使用说明,对其感兴趣的朋友可以多多关注 smart-http 文档站点:https://smartboot.tech/smart-http

3、Maven

<dependency>
    <groupId>io.github.smartboot.http</groupId>
    <artifactId>smart-http-server</artifactId>
    <version>2.0</version>
</dependency>

<dependency>
    <groupId>io.github.smartboot.http</groupId>
    <artifactId>smart-http-client</artifactId>
    <version>2.0</version>
</dependency>

4、快速上手

4.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();
    }
}

4.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();
    }
}

4.3 Http客户端

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

4.4 WebSocket 客户端

public class HttpGetDemo {
    public static void main(String[] args) throws IOException {
        WebSocketClient client = new WebSocketClient("ws://localhost:8080");
        client.connect(new WebSocketListener() {
            @Override
            public void onOpen(WebSocketClient client, WebSocketResponse session) {
                try {
                    client.sendMessage("hello smart-http");
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }

            @Override
            public void onMessage(WebSocketClient client, String message) {
                System.out.println(message);
            }
        });
    }
}

4.5 Restful

<dependency>
    <groupId>io.github.smartboot.http</groupId>
    <artifactId>smart-http-restful</artifactId>
    <version>${smarthttp.version}</version>
</dependency>
@Controller
public 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 4.0 容器服务。

  • smart-mqtt
    基于 smart-socket 实现的 MQTT 3.1.1/5.0 Broker&Client 服务。

  • smart-flow
    一款具备可观测性的轻量级业务编排框架。

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

展开阅读全文
点击加入讨论🔥(4) 发布并加入讨论🔥
4 评论
1 收藏
分享
AI总结
返回顶部
顶部