spring-boot集成webSocket

工具、版本

开发工具:IntelliJ IDEA
JDK:1.8
spring-boot:2.6.0(事例使用,可根据自己版本调整)
maven:3.6.3

依赖jar

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-websocket</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.49</version>
        </dependency>

项目结构

spring-boot集成webSocket

结构介绍

一、websocket服务注册到spring容器

@Configuration
public class WebSocketConfig {
    @Bean
    public ServerEndpointExporter serverEndpointExporter() {
        return new ServerEndpointExporter();
    }
}
二、开放服务节点
@Slf4j
@Component
@ServerEndpoint("/socket/server/{clientId}")
public class SocketServer {


    private Logger logger = LoggerFactory.getLogger(SocketServer.class);

    @OnOpen
    public void onOpen(@PathParam("clientId") String clientId, Session session) throws IOException {
        logger.info("客户端{},上线。", clientId);
        session.getBasicRemote().sendText("欢迎上线。");
    }

    @OnClose
    public void onClose(@PathParam("clientId") String clientId) {
        logger.info("客户端{},离线。", clientId);
    }

    @OnError
    public void one rror(@PathParam("clientId") String clientId, Throwable throwable) {
        logger.info("客户端{},异常及异常原因:{}。", clientId, throwable);
    }


    @OnMessage
    public void handler(String receiveMessage, Session session) {
        //接收消息
        logger.info("客户端发送消息内容:{}。", receiveMessage);
        try {
            session.getBasicRemote().sendText("收到:" + receiveMessage);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

测试

测试地址:http://coolaf.com/tool/chattest
spring-boot集成webSocket

上一篇:Android dex分包方案


下一篇:Websocket集群(使用redis订阅发布实现)