smart-http 1.6.1 实例
所属分类 smartboot
浏览量 75
smart-http v1.6.1 发布
https://mp.weixin.qq.com/s/Ov4aPXb9xZs5xcHBp-l1Zw
smart-http 是一款基于国产 AIO 通信框架 smart-socket 开发的 HTTP 服务器。
除了极致轻量化和卓越的性能表现,smart-http 还拥有完整的 Web 服务能力:
HTTP Server
WebSocket Server
HTTP Client
WebSocket Client
轻量级 MVC(实验性)
io.github.smartboot.http:smart-http-server:1.6.1
io.github.smartboot.http:smart-http-client:1.6.1
io.github.smartboot.http:smart-http-restful:1.6.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".getBytes());
}
}).setPort(8070).start();
}
}
WebSocket 服务端
public class WebSocketServerDemo {
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.setPort(8071);
bootstrap.webSocketHandler(routeHandle);
bootstrap.start();
}
}
Http客户端
public class HttpClientDemo {
public static void main(String[] args) {
HttpClient httpClient = new HttpClient("127.0.0.1", 8070);
httpClient.get("/").header().keepalive(false).done()
.onSuccess(response -> System.out.println(response.body()))
.onFailure(Throwable::printStackTrace)
.done();
}
}
public class WebSocketClientDemo {
public static void main(String[] args) throws IOException {
WebSocketClient client = new WebSocketClient("ws://localhost:8071");
client.connect(new WebSocketListener() {
@Override
public void onOpen(WebSocketClient client, WebSocketResponse session) {
try {
client.sendMessage("hello smart-http websocket");
} catch (IOException e) {
throw new RuntimeException(e);
}
}
@Override
public void onMessage(WebSocketClient client, String message) {
System.out.println(message);
}
});
}
}
Restful
@Controller
public class RestfulServerDemo {
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String hello() {
return"hello smart restful";
}
public static void main(String[] args) throws Exception {
RestfulBootstrap bootstrap = RestfulBootstrap.getInstance().controller(RestfulDemo.class);
bootstrap.bootstrap().setPort(8072).start();
}
}
项目依赖
mvn dependency:tree -Dverbose
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ smartbootdemo ---
[WARNING] The artifact xml-apis:xml-apis:jar:2.0.2 has been relocated to xml-apis:xml-apis:jar:1.0.b2
[INFO] dyyx:smartbootdemo:jar:1.0.0
[INFO] +- io.github.smartboot.http:smart-http-server:jar:1.6.1:compile
[INFO] | \- io.github.smartboot.http:smart-http-common:jar:1.6.1:compile
[INFO] | \- io.github.smartboot.socket:aio-pro:jar:1.5.54:compile
[INFO] | +- io.github.smartboot.socket:aio-core:jar:1.5.54:compile
[INFO] | \- org.slf4j:slf4j-api:jar:1.7.36:compile
[INFO] +- io.github.smartboot.http:smart-http-client:jar:1.6.1:compile
[INFO] | \- (io.github.smartboot.http:smart-http-common:jar:1.6.1:compile - omitted for duplicate)
[INFO] \- io.github.smartboot.http:smart-http-restful:jar:1.6.1:compile
[INFO] +- (io.github.smartboot.http:smart-http-server:jar:1.6.1:compile - omitted for duplicate)
[INFO] \- com.alibaba.fastjson2:fastjson2:jar:2.0.8:compile
[INFO] ------------------------------------------------------------------------
io.github.smartboot.http
smart-http-server
smart-http-common
aio-pro
aio-core
slf4j-api
smart-http-client
mart-http-server
fastjson2
http://127.0.0.1:8070
hello smart-http
HttpClientDemo
hello smart-http
websocket
http://127.0.0.1:8071
Hello smart-http
org.smartboot.http.server.HttpServerConfiguration.httpServerHandler
private HttpServerHandler httpServerHandler = new HttpServerHandler() {
@Override
public void handle(HttpRequest request, HttpResponse response) throws IOException {
response.write("Hello smart-http".getBytes(StandardCharsets.UTF_8));
}
};
WebSocketClientDemo
ws://localhost:8071
接受到客户端消息:hello smart-http websocket
restful
http://127.0.0.1:8072/
hello smart-http-rest
org.smartboot.http.restful.RestfulBootstrap
private static final HttpServerHandler DEFAULT_HANDLER = new HttpServerHandler() {
private final byte[] BYTES = "hello smart-http-rest".getBytes();
@Override
public void handle(HttpRequest request, HttpResponse response) throws IOException {
response.getOutputStream().write(BYTES);
}
};
http://127.0.0.1:8072/hello
hello smart restful
上一篇
下一篇
java AIO 使用注意点
JAVA AIO 例子 客户端发送与服务端接收消息
java AIO echo server
java NIO ByteBuffer 读写整数
java NIO ByteBuffer 使用技巧
smartsocket 整数读写实例