Solon

solon.boot.jetty

<dependency>
    <groupId>org.noear</groupId>
    <artifactId>solon.boot.jetty</artifactId>
</dependency>

1、描述

通讯扩展插件,基于 jetty 的http信号服务适配。可用于 Api 开发、Rpc 开发、Mvc web 开发、WebSocket 开发。

支持信号:

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

配套的二级插件:

插件说明
solon.boot.jetty.add.jsp增加 jsp 视图支持
solon.boot.jetty.add.servlet增加 servlet 扩展包支持
solon.boot.jetty.add.websocket增加 websocket 通讯支持(端口与 http 共用)

2、应用示例

Web 示例:

public class DemoApp {
    public static void main(String[] args) {
        Solon.start(DemoApp.class, args);
    }
}

@Controller
public class DemoController{
    @Mapping("/hello")
    public String hello(){
        return "Hello world!";
    }
}

WebSocket 示例:(需要添加 solon.boot.jetty.add.websocket 插件)

public class DemoApp {
    public static void main(String[] args) {
        Solon.start(DemoApp.class, args, app->{
            //启用 WebSocket 服务
            app.enableWebSocket(true);
        });
    }
}

@ServerEndpoint(path = "/hello/{id}")
public class WebSocketServerImp implements Listener {
    @Override
    public void onOpen(Session session) {
        //path var
        String id = session.param("id") 
        //query var
        String token = session.param("token") 
        
        System.out.println("id: " + id + ", token: " + token);
    }
    
    @Override
    public void onMessage(Session session, Message message) {
        //message.setHandled(true); //设为true,则不进入mvc路由
        
        session.send("我收到了:" + message.bodyAsString());
        
        //接收二进制
        //byte[] bytes = message.body();
        //发送二进制
        //session.send(Message.wrap(new byte[0]));
    }
}

/*
ws://localhost:18080/hello/12?token=xxx
*/