Solon v4.0.6

solon-server-feathttp [试用]

</> markdown
2026年8月12日 下午12:01:03

此插件,主要社区贡献人(CrazyAirhead、三刀)。v4.0.5 后支持

<dependency>
    <groupId>org.noear</groupId>
    <artifactId>solon-server-feathttp</artifactId>
</dependency>

1、描述

通讯扩展插件,基于 feat http server(代码仓库)的 http 信号服务适配。可用于 Api 开发、Rpc 开发、Mvc web 开发、WebSocket 开发。

支持信号:

信号说明
http默认端口 8080,可由 server.portserver.http.port 配置
ws端口与 http 共用

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)

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);
        });
    }
}