WebSocket

# WebSocket

# SpringBoot集成WebSocket

# 原生注解方式

# pom.xml

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

# WebSocketConfig

通过这个配置类,SpringBoot才能扫描关于WebSocket的注解

/*
 * *
 *  * blog.coder4j.cn
 *  * Copyright (C) 2016-2019 All Rights Reserved.
 *
 */
package cn.coder4j.study.example.websocket.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;

/**
 * @author buhao
 * @version WebSocketConfig.java, v 0.1 2019-10-18 15:45 buhao
 */
@Configuration
@EnableWebSocket
public class WebSocketConfig {

    @Bean
    public ServerEndpointExporter serverEndpoint() {
        return new ServerEndpointExporter();
    }
}

# WsServerEndpoint组件

@ServerEndpoint("/myWs") 通过这个,Springboot知道暴露出去的ws应用的路径,类似于@RequestMapping();如果启动端口是8080,则可以通过 ws://127.0.0.1:8080/myWs 来连接应用 @OnOpen 连接成功后会触发这个注释的方法,该方法有个Session参数 @OnClose 连接断开后触发,也有Session参数 @OnMessage 客户端发送消息到服务端时,会触发,有个String入参,表示客户端传入的值 @OnError 建立连接时出现异常时,会触发,有Session入参

服务端发送消息到客户端: import javax.websocket.Session; session.getBasicRemote().sendText(message); sessioin是已经建立过连接的session

# Session

WebSocket的Session不能被序列化,所以不能直接放入redis

Last Updated: 4/4/2024