通用请求体类
@ApiModel("websocket请求消息")
public class WebSocketRequest<T> implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 参考:com.mcmcnet.gacne.basic.service.common.pojo.enumeration.screen.AiBroadcastEventEnum;
*/
private @NotNull(message = "业务操作类型不能为空") Integer aiBroadcastEventEnum;
private T data;
public T getRealData(Class<T> clazz) {
if (this.data == null) {
return null;
} else {
String jsonStr = JsonUtil.toJsonStr(this.data);
return (T) JsonUtil.parseObject(jsonStr, clazz);
}
}
}
通用响应类
@Data
public class WebSocketResponse<T> implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 参考枚举:com.mcmcnet.gacne.basic.service.common.pojo.enumeration.screen.AiBroadcastEventEnum
*/
private Integer aiBroadcastEventEnum;
private String code;
private String msg;
private T data;
public static <T> Mono<WebSocketResponse<T>> ok(Integer eventEnum, T data) {
WebSocketResponse<T> response = new WebSocketResponse<T>();
response.setAiBroadcastEventEnum(eventEnum);
response.setCode(RespStatusEnum.OK.getCode());
response.setMsg(RespStatusEnum.OK.getMsg());
response.setData(data);
return Mono.just(response);
}
public static Mono<WebSocketResponse<Void>> ok(Integer eventEnum) {
WebSocketResponse<Void> response = new WebSocketResponse<Void>();
response.setAiBroadcastEventEnum(eventEnum);
response.setCode(RespStatusEnum.OK.getCode());
response.setMsg(RespStatusEnum.OK.getMsg());
return Mono.just(response);
}
public static <T> Mono<WebSocketResponse<T>> fail(Integer eventEnum, RespStatusEnum status, String err) {
WebSocketResponse<T> response = new WebSocketResponse<T>();
response.setAiBroadcastEventEnum(eventEnum);
response.setCode(status.getCode());
response.setMsg(err);
return Mono.just(response);
}
}
连接类型类
@Accessors(chain = true)
public class ConnectDTO {
/**
* 连接类型 参考枚举:com.mcmcnet.gacne.basic.service.common.pojo.enumeration.screen.AiBroadcastEventEnum
*/
private Integer type;
}
配置类
public class WebFluxWebSocketConfig {
/** 让 Spring 注入已经带依赖的 Handler */
@Bean
public HandlerMapping webSocketMapping(WebSocketReceivedHandler handler) {
return new SimpleUrlHandlerMapping(
Map.of("/api/xxx/ws", handler), // 用注入的 handler
-1
);
}
@Bean
public WebSocketHandlerAdapter handlerAdapter() {
return new WebSocketHandlerAdapter();
}
}