Solon

solon.boot.websocket

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

1、描述

通讯扩展插件,基于 Java-WebSocket 的 websocket 信号服务适配。可用于 Api 开发、Rpc 开发、WebSocket 开发。

支持信号:

信号说明
ws默认为主端口+10000(即 server.port + 10000) 或 server.websocket.port 配置

2、应用示例

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

//
// 应答模式(可以用控制器开发)
//
@Controller
public class WebSocketController{
    @WebSocket
    @Mapping("/hello/{id}")
    public String test(@Body String message){
        return "我收到了:" + message;
    }
}

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