新增:增加公共webscoket模块

This commit is contained in:
2026-04-01 17:56:10 +08:00
parent e84a453b19
commit b982eb80d2
10 changed files with 449 additions and 0 deletions

View File

@@ -0,0 +1,25 @@
package com.sdm.common.common;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
// 公共websocke消息实体类
@Data
@NoArgsConstructor
@AllArgsConstructor
public class WsMessage<T> {
// 场景:定义在 WsSceneEnum 维护,前端根据这个字段处理业务
private String scene;
// 单一推送接收者的用户id; 群发推送发送人的推送id
private Long userId;
// 推送的时间戳
private Long timestamp;
// 推送的数据
private T data;
}

View File

@@ -0,0 +1,22 @@
package com.sdm.common.common;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum WsSceneEnum {
BIG_FILE_CHUNK("BIG_FILE_CHUNK","大文件分片上传结果通知" );
/**
* scene webscoket 推送的业务场景
*/
private final String scene;
/**
* scene webscoket 推送的业务场景名称
*/
private final String sceneName ;
}

View File

@@ -0,0 +1,47 @@
package com.sdm.common.feign.impl.system;
import com.sdm.common.common.SdmResponse;
import com.sdm.common.common.WsMessage;
import com.sdm.common.feign.inter.system.IWsPushToolFeignClient;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class WsPushToolFeignClientImpl implements IWsPushToolFeignClient {
@Autowired
private IWsPushToolFeignClient wsPushToolFeignClient;
@Override
public SdmResponse wsPushOne(WsMessage wsMessage) {
SdmResponse sdmResponse;
try {
sdmResponse = wsPushToolFeignClient.wsPushOne(wsMessage);
if (!sdmResponse.isSuccess() ){
return SdmResponse.failed("推送单一用户失败");
}
} catch (Exception e) {
log.error("推送单一用户失败", e);
return SdmResponse.failed("推送单一用户失败");
}
return sdmResponse;
}
@Override
public SdmResponse wsPushAll(WsMessage wsMessage) {
SdmResponse sdmResponse;
try {
sdmResponse = wsPushToolFeignClient.wsPushAll(wsMessage);
if (!sdmResponse.isSuccess() ){
return SdmResponse.failed("推送全量用户失败");
}
} catch (Exception e) {
log.error("推送全量用户失败", e);
return SdmResponse.failed("推送全量用户失败");
}
return sdmResponse;
}
}

View File

@@ -0,0 +1,18 @@
package com.sdm.common.feign.inter.system;
import com.sdm.common.common.SdmResponse;
import com.sdm.common.common.WsMessage;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@FeignClient(name = "system",contextId = "IWsPushToolFeignClient")
public interface IWsPushToolFeignClient {
@PostMapping("/inWs/wsPushOne")
SdmResponse wsPushOne(@RequestBody WsMessage wsMessage);
@PostMapping("/inWs/wsPushAll")
SdmResponse wsPushAll( @RequestBody WsMessage wsMessage);
}