solon-boot-smarthttp [国产]
此插件,由社区成员(三刀)贡献
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon-boot-smarthttp</artifactId>
</dependency>
1、描述
通讯扩展插件,基于 smart-http(代码仓库)的http信号服务适配。可用于 Api 开发、Rpc 开发、Mvc web 开发、WebSocket 开发。
当项目中引入 solon-boot-jetty
或 solon-boot-undertow
或 solon-boot-vertx
插件时,会自动不启用。
支持信号:
信号 | 说明 |
---|---|
http | 默认端口 8080,可由 server.port 或 server.http.port 配置 |
ws | 端口与 http 共用 |
已知限制:
上传文件大小,不能超过 int 最大值(约 2.1G)
2、应用示例
Web 示例:
public class DemoApp {
public static void main(String[] args) {
Solon.start(DemoApp.class, args, app->{
//开始调试模式
//app.onEvent(HttpServerConfigure.class, e->{
// e.enableDebug(Solon.cfg().isDebugMode());
//});
});
}
}
@Controller
public class DemoController{
@Mapping("/hello")
public String hello(){
return "Hello world!";
}
}
WebSocket 示例:
public class DemoApp {
public static void main(String[] args) {
Solon.start(DemoApp.class, args, app->{
//启用 WebSocket 服务
app.enableWebSocket(true);
});
}
}
@ServerEndpoint("/ws/demo/{id}")
public class WebSocketDemo extends SimpleWebSocketListener {
@Override
public void onMessage(WebSocket socket, String text) throws IOException {
socket.send("我收到了:" + text);
}
}
更多内容请参考:《Solon WebSocket 开发》
3、添加 ssl 证书配置,启用 https 支持(极少有需求会用到)
server.ssl.keyStore: "/data/_ca/demo.jks" #或 "demo.pfx"
server.ssl.keyPassword: "demo"
更多配置,可参考:《应用常用配置说明》
4、自定义 SSLContext(不走配置,也可以 ssl)
v2.5.9 后支持
public class AppDemo {
public static void main(String[] args) {
Solon.start(AppDemo.class, args, app -> {
SSLContext sslContext = ...;
app.onEvent(HttpServerConfigure.class, e -> {
e.enableSsl(true, sslContext);
});
});
}
}
5、添加 http 端口(极少有需求会用到)
一般是在启用 https 之后,仍想要有一个 http 端口时,才会使用。 v2.2.18 后支持
@SolonMain
public class SeverDemo {
public static void main(String[] args) {
Solon.start(SeverDemo.class, args, app -> {
app.onEvent(HttpServerConfigure.class, e -> {
//添加http端口(如果主端口被 https 占了,可以再加个 http)
e.addHttpPort(8082);
//启动调试模式
e.enableDebug(true);
});
});
}
}
6、控制 http 端口启停(极少有需求会用到)
关掉 http 启用(就是关掉,自动启动)
@SolonMain
public class SeverDemo {
public static void main(String[] args) {
Solon.start(SeverDemo.class, args, app -> {
app.enableHttp(false);
});
}
}
使用 SmHttpServer 类(细节看类里的接口)
SmHttpServer server = new SmHttpServer();
//启动
server.start(null, 8080);
//停止
server.stop();