| | |
| | | |
| | | public HeaderHttpServletRequestWrapper(HttpServletRequest request) { |
| | | super(request); |
| | | this.headers = new HashMap(); |
| | | this.headers = new HashMap<>(); |
| | | } |
| | | |
| | | public void addHeader(String name, String value) { |
| | |
| | | |
| | | public void handle(WebSocketSession session, RealTimeDataRequestJsonWebSocketMessage message) { |
| | | List<String> workstationIdList = message.getWorkstationIdList(); |
| | | List<OrderWorkstation> workstationInProcess = this.orderWorkstationService.getWorkstationInProcess((Set) workstationIdList.stream().map(Long::valueOf).collect(Collectors.toSet())); |
| | | List<OrderWorkstation> workstationInProcess = this.orderWorkstationService.getWorkstationInProcess(workstationIdList.stream().map(Long::valueOf).collect(Collectors.toSet())); |
| | | Map<Long, String> orderWorkstationMap = (Map) workstationInProcess.stream().collect(Collectors.toMap((v0) -> { |
| | | return v0.getWorkstationId(); |
| | | }, (v0) -> { |
| | |
| | | import com.qianwen.smartman.modules.cps.utils.TelemetryDataUtils; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | /** |
| | | * rockmq消息消费者 telemetry(遥测) |
| | | */ |
| | | @RocketMQMessageListener(topic = "telemetry-data", consumerGroup = "telemetry-data-real-time-consumer", consumeMode = ConsumeMode.ORDERLY) |
| | | @Component |
| | | public class TelemetryDataRealTimeConsumer implements RocketMQListener<TelemetryDataMessage>, RocketMQPushConsumerLifecycleListener { |
| | |
| | | }); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void prepareStart(DefaultMQPushConsumer consumer) { |
| | | consumer.setMaxReconsumeTimes(1); |
| | | consumer.setInstanceName(CommonUtil.changeInstanceNameToPID(consumer)); |
| | | consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_LAST_OFFSET); |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | |
| | | @ConditionalOnProperty(prefix = WebSocketProperties.PREFIX, name = {"message-distributor"}, havingValue = MessageDistributorTypeConstants.LOCAL) |
| | | @Configuration(proxyBeanMethods = false) |
| | | /* loaded from: blade-starter-websocket-9.3.0.0-SNAPSHOT.jar:org/springblade/core/websocket/config/LocalMessageDistributorConfiguration.class */ |
| | | public class LocalMessageDistributorConfiguration { |
| | | @ConditionalOnMissingBean({MessageDistributor.class}) |
| | | @Bean |
| | |
| | | package com.qianwen.core.websocket.config; |
| | | |
| | | /* loaded from: blade-starter-websocket-9.3.0.0-SNAPSHOT.jar:org/springblade/core/websocket/config/MessageDistributorTypeConstants.class */ |
| | | public final class MessageDistributorTypeConstants { |
| | | public static final String LOCAL = "local"; |
| | | public static final String REDIS = "redis"; |
| | |
| | | @ConditionalOnClass({StringRedisTemplate.class}) |
| | | @ConditionalOnProperty(prefix = WebSocketProperties.PREFIX, name = {"message-distributor"}, havingValue = MessageDistributorTypeConstants.REDIS, matchIfMissing = true) |
| | | @Configuration(proxyBeanMethods = false) |
| | | /* loaded from: blade-starter-websocket-9.3.0.0-SNAPSHOT.jar:org/springblade/core/websocket/config/RedisMessageDistributorConfiguration.class */ |
| | | public class RedisMessageDistributorConfiguration { |
| | | @ConditionalOnMissingBean({MessageDistributor.class}) |
| | | @Bean |
| | |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | @Component |
| | | /* loaded from: blade-starter-websocket-9.3.0.0-SNAPSHOT.jar:org/springblade/core/websocket/config/ServerConfig.class */ |
| | | public class ServerConfig implements ApplicationListener<WebServerInitializedEvent> { |
| | | private int serverPort; |
| | | |
| | |
| | | @Configuration |
| | | @Import({WebSocketHandlerConfig.class}) |
| | | @EnableWebSocket |
| | | /* loaded from: blade-starter-websocket-9.3.0.0-SNAPSHOT.jar:org/springblade/core/websocket/config/WebSocketAutoConfiguration.class */ |
| | | public class WebSocketAutoConfiguration { |
| | | private final WebSocketProperties webSocketProperties; |
| | | private final List<JsonMessageHandler> jsonMessageHandlerList; |
| | |
| | | import org.springframework.web.socket.server.HandshakeInterceptor; |
| | | |
| | | @EnableConfigurationProperties({WebSocketProperties.class}) |
| | | /* loaded from: blade-starter-websocket-9.3.0.0-SNAPSHOT.jar:org/springblade/core/websocket/config/WebSocketHandlerConfig.class */ |
| | | public class WebSocketHandlerConfig { |
| | | private final WebSocketProperties webSocketProperties; |
| | | |
| | |
| | | import org.springframework.web.socket.TextMessage; |
| | | import org.springframework.web.socket.WebSocketSession; |
| | | |
| | | /* loaded from: blade-starter-websocket-9.3.0.0-SNAPSHOT.jar:org/springblade/core/websocket/config/WebSocketMessageSender.class */ |
| | | public class WebSocketMessageSender { |
| | | private static final Logger log = LoggerFactory.getLogger(WebSocketMessageSender.class); |
| | | |
| | |
| | | import org.springframework.boot.context.properties.ConfigurationProperties; |
| | | |
| | | @ConfigurationProperties(WebSocketProperties.PREFIX) |
| | | /* loaded from: blade-starter-websocket-9.3.0.0-SNAPSHOT.jar:org/springblade/core/websocket/config/WebSocketProperties.class */ |
| | | public class WebSocketProperties { |
| | | public static final String PREFIX = "blade.websocket"; |
| | | private String path = "/ws/info"; |
| | |
| | | import com.qianwen.core.websocket.message.JsonWebSocketMessage; |
| | | import org.springframework.web.socket.WebSocketSession; |
| | | |
| | | /* loaded from: blade-starter-websocket-9.3.0.0-SNAPSHOT.jar:org/springblade/core/websocket/custom/DefaultTypeSessionFilter.class */ |
| | | public class DefaultTypeSessionFilter implements SubscriptionSessionFilter<JsonWebSocketMessage> { |
| | | private final String type; |
| | | |
| | |
| | | this.type = type; |
| | | } |
| | | |
| | | @Override // com.qianwen.core.websocket.custom.SubscriptionSessionFilter |
| | | @Override |
| | | public String type() { |
| | | return this.type; |
| | | } |
| | | |
| | | @Override // com.qianwen.core.websocket.custom.SubscriptionSessionFilter |
| | | @Override |
| | | public void onMessage(WebSocketSession session, JsonWebSocketMessage message) { |
| | | session.getAttributes().put(JsonWebSocketMessage.TYPE_FIELD, this.type); |
| | | } |
| | | |
| | | @Override // com.qianwen.core.websocket.custom.SubscriptionSessionFilter |
| | | @Override |
| | | public List<String> onResponse(String message) { |
| | | return (List) WebSocketSessionHolder.getSessions().stream().filter(item -> { |
| | | return WebSocketSessionHolder.getSessions().stream().filter(item -> { |
| | | return this.type.equals(item.getAttributes().get(JsonWebSocketMessage.TYPE_FIELD)); |
| | | }).map((v0) -> { |
| | | return v0.getId(); |
| | |
| | | import org.springframework.web.socket.WebSocketSession; |
| | | |
| | | @Configuration |
| | | /* loaded from: blade-starter-websocket-9.3.0.0-SNAPSHOT.jar:org/springblade/core/websocket/custom/MasterlinkSessionKeyGenerator.class */ |
| | | public class MasterlinkSessionKeyGenerator implements SessionKeyGenerator { |
| | | @Autowired(required = false) |
| | | private ServiceInstance instance; |
| | | @Autowired |
| | | private ServerConfig serverConfig; |
| | | |
| | | @Override // com.qianwen.core.websocket.holder.SessionKeyGenerator |
| | | @Override |
| | | public Object sessionKey(WebSocketSession webSocketSession) { |
| | | String host; |
| | | int port; |
| | |
| | | import com.qianwen.core.websocket.message.JsonWebSocketMessage; |
| | | import org.springframework.web.socket.WebSocketSession; |
| | | |
| | | /* loaded from: blade-starter-websocket-9.3.0.0-SNAPSHOT.jar:org/springblade/core/websocket/custom/SubscriptionSessionFilter.class */ |
| | | public interface SubscriptionSessionFilter<R extends JsonWebSocketMessage> { |
| | | String type(); |
| | | |
| | |
| | | import org.springframework.web.socket.WebSocketHandler; |
| | | import org.springframework.web.socket.server.HandshakeInterceptor; |
| | | |
| | | /* loaded from: blade-starter-websocket-9.3.0.0-SNAPSHOT.jar:org/springblade/core/websocket/custom/UserAttributeHandshakeInterceptor.class */ |
| | | public class UserAttributeHandshakeInterceptor implements HandshakeInterceptor { |
| | | public boolean beforeHandshake(ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse, WebSocketHandler webSocketHandler, Map<String, Object> attributes) throws Exception { |
| | | BladeUser user = AuthUtil.getUser(); |
| | |
| | | package com.qianwen.core.websocket.distribute; |
| | | |
| | | /* loaded from: blade-starter-websocket-9.3.0.0-SNAPSHOT.jar:org/springblade/core/websocket/distribute/LocalMessageDistributor.class */ |
| | | |
| | | public class LocalMessageDistributor implements MessageDistributor, MessageSender { |
| | | @Override // com.qianwen.core.websocket.distribute.MessageDistributor |
| | | @Override |
| | | public void distribute(MessageDO messageDO) { |
| | | doSend(messageDO); |
| | | } |
| | |
| | | |
| | | import java.util.List; |
| | | |
| | | /* loaded from: blade-starter-websocket-9.3.0.0-SNAPSHOT.jar:org/springblade/core/websocket/distribute/MessageDO.class */ |
| | | public class MessageDO { |
| | | private Boolean needBroadcast; |
| | | private List<Object> sessionKeys; |
| | |
| | | package com.qianwen.core.websocket.distribute; |
| | | |
| | | /* loaded from: blade-starter-websocket-9.3.0.0-SNAPSHOT.jar:org/springblade/core/websocket/distribute/MessageDistributor.class */ |
| | | public interface MessageDistributor { |
| | | void distribute(MessageDO messageDO); |
| | | } |
| | |
| | | import com.qianwen.core.websocket.config.WebSocketMessageSender; |
| | | import com.qianwen.core.websocket.holder.WebSocketSessionHolder; |
| | | |
| | | /* loaded from: blade-starter-websocket-9.3.0.0-SNAPSHOT.jar:org/springblade/core/websocket/distribute/MessageSender.class */ |
| | | |
| | | public interface MessageSender { |
| | | default void doSend(MessageDO messageDO) { |
| | | Boolean needBroadcast = messageDO.getNeedBroadcast(); |
| | |
| | | import org.springframework.cloud.client.ServiceInstance; |
| | | import org.springframework.data.redis.core.StringRedisTemplate; |
| | | |
| | | /* loaded from: blade-starter-websocket-9.3.0.0-SNAPSHOT.jar:org/springblade/core/websocket/distribute/RedisMessageDistributor.class */ |
| | | public class RedisMessageDistributor implements MessageDistributor { |
| | | private final StringRedisTemplate stringRedisTemplate; |
| | | |
| | |
| | | this.stringRedisTemplate = stringRedisTemplate; |
| | | } |
| | | |
| | | @Override // com.qianwen.core.websocket.distribute.MessageDistributor |
| | | @Override |
| | | public void distribute(MessageDO messageDO) { |
| | | String host; |
| | | int port; |
| | |
| | | if (Func.isNotEmpty(messageDO.getSessionKeys())) { |
| | | String str = host; |
| | | int i = port; |
| | | List<Object> sessionKeyList = (List) messageDO.getSessionKeys().stream().map(key -> { |
| | | List<Object> sessionKeyList = messageDO.getSessionKeys().stream().map(key -> { |
| | | return String.format("%s:%s:%s", str, Integer.valueOf(i), key); |
| | | }).collect(Collectors.toList()); |
| | | messageDO.setSessionKeys(sessionKeyList); |
| | |
| | | import org.springframework.data.redis.core.StringRedisTemplate; |
| | | import org.springframework.data.redis.serializer.RedisSerializer; |
| | | |
| | | /* loaded from: blade-starter-websocket-9.3.0.0-SNAPSHOT.jar:org/springblade/core/websocket/distribute/RedisWebsocketMessageListener.class */ |
| | | public class RedisWebsocketMessageListener implements MessageListener, MessageSender { |
| | | public static final String CHANNEL = "websocket-send"; |
| | | private final StringRedisTemplate stringRedisTemplate; |
| | |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.web.socket.WebSocketSession; |
| | | |
| | | /* loaded from: blade-starter-websocket-9.3.0.0-SNAPSHOT.jar:org/springblade/core/websocket/handler/CustomPlanTextMessageHandler.class */ |
| | | public class CustomPlanTextMessageHandler implements PlanTextMessageHandler { |
| | | private static final Logger log = LoggerFactory.getLogger(CustomPlanTextMessageHandler.class); |
| | | |
| | | @Override // com.qianwen.core.websocket.handler.PlanTextMessageHandler |
| | | @Override |
| | | public void handle(WebSocketSession session, String message) { |
| | | log.info("sessionId {} ,msg {}", session.getId(), message); |
| | | } |
| | |
| | | import org.springframework.web.socket.WebSocketSession; |
| | | import org.springframework.web.socket.handler.TextWebSocketHandler; |
| | | |
| | | /* loaded from: blade-starter-websocket-9.3.0.0-SNAPSHOT.jar:org/springblade/core/websocket/handler/CustomWebSocketHandler.class */ |
| | | public class CustomWebSocketHandler extends TextWebSocketHandler { |
| | | private static final Logger log = LoggerFactory.getLogger(CustomWebSocketHandler.class); |
| | | private static final ObjectMapper MAPPER = new ObjectMapper(); |
| | |
| | | import com.qianwen.core.websocket.message.JsonWebSocketMessage; |
| | | import org.springframework.web.socket.WebSocketSession; |
| | | |
| | | /* loaded from: blade-starter-websocket-9.3.0.0-SNAPSHOT.jar:org/springblade/core/websocket/handler/JsonMessageHandler.class */ |
| | | public interface JsonMessageHandler<T extends JsonWebSocketMessage> { |
| | | void handle(WebSocketSession session, T message); |
| | | |
| | |
| | | import com.qianwen.core.websocket.message.WebSocketMessageTypeEnum; |
| | | import org.springframework.web.socket.WebSocketSession; |
| | | |
| | | /* loaded from: blade-starter-websocket-9.3.0.0-SNAPSHOT.jar:org/springblade/core/websocket/handler/PingJsonMessageHandler.class */ |
| | | public class PingJsonMessageHandler implements JsonMessageHandler<PingJsonWebSocketMessage> { |
| | | @Override // com.qianwen.core.websocket.handler.JsonMessageHandler |
| | | @Override |
| | | public void handle(WebSocketSession session, PingJsonWebSocketMessage message) { |
| | | JsonWebSocketMessage pongJsonWebSocketMessage = new PongJsonWebSocketMessage(); |
| | | WebSocketMessageSender.send(session, pongJsonWebSocketMessage); |
| | | } |
| | | |
| | | @Override // com.qianwen.core.websocket.handler.JsonMessageHandler |
| | | @Override |
| | | public String type() { |
| | | return WebSocketMessageTypeEnum.PING.getValue(); |
| | | } |
| | | |
| | | @Override // com.qianwen.core.websocket.handler.JsonMessageHandler |
| | | @Override |
| | | public Class<PingJsonWebSocketMessage> getMessageClass() { |
| | | return PingJsonWebSocketMessage.class; |
| | | } |
| | |
| | | |
| | | import org.springframework.web.socket.WebSocketSession; |
| | | |
| | | /* loaded from: blade-starter-websocket-9.3.0.0-SNAPSHOT.jar:org/springblade/core/websocket/handler/PlanTextMessageHandler.class */ |
| | | public interface PlanTextMessageHandler { |
| | | void handle(WebSocketSession session, String message); |
| | | } |
| | |
| | | import com.qianwen.core.websocket.custom.SubscriptionSessionFilter; |
| | | import org.springframework.web.socket.WebSocketSession; |
| | | |
| | | /* loaded from: blade-starter-websocket-9.3.0.0-SNAPSHOT.jar:org/springblade/core/websocket/holder/JsonMessageFilterHolder.class */ |
| | | |
| | | public final class JsonMessageFilterHolder { |
| | | private static final Map<String, SubscriptionSessionFilter> MESSAGE_HANDLER_MAP = new ConcurrentHashMap<>(); |
| | | |
| | |
| | | import java.util.concurrent.ConcurrentHashMap; |
| | | import com.qianwen.core.websocket.handler.JsonMessageHandler; |
| | | |
| | | /* loaded from: blade-starter-websocket-9.3.0.0-SNAPSHOT.jar:org/springblade/core/websocket/holder/JsonMessageHandlerHolder.class */ |
| | | public final class JsonMessageHandlerHolder { |
| | | private static final Map<String, JsonMessageHandler> MESSAGE_HANDLER_MAP = new ConcurrentHashMap(); |
| | | |
| | |
| | | import org.springframework.web.socket.WebSocketSession; |
| | | import org.springframework.web.socket.handler.WebSocketHandlerDecorator; |
| | | |
| | | /* loaded from: blade-starter-websocket-9.3.0.0-SNAPSHOT.jar:org/springblade/core/websocket/holder/MapSessionWebSocketHandlerDecorator.class */ |
| | | public class MapSessionWebSocketHandlerDecorator extends WebSocketHandlerDecorator { |
| | | private final SessionKeyGenerator sessionKeyGenerator; |
| | | |
| | |
| | | |
| | | import org.springframework.web.socket.WebSocketSession; |
| | | |
| | | /* loaded from: blade-starter-websocket-9.3.0.0-SNAPSHOT.jar:org/springblade/core/websocket/holder/SessionKeyGenerator.class */ |
| | | public interface SessionKeyGenerator { |
| | | Object sessionKey(WebSocketSession webSocketSession); |
| | | } |
| | |
| | | import java.util.stream.Collectors; |
| | | import org.springframework.web.socket.WebSocketSession; |
| | | |
| | | /* loaded from: blade-starter-websocket-9.3.0.0-SNAPSHOT.jar:org/springblade/core/websocket/holder/WebSocketSessionHolder.class */ |
| | | public class WebSocketSessionHolder { |
| | | private static final Map<Object, Set<WebSocketSession>> USER_SESSION_MAP = new ConcurrentHashMap(); |
| | | |
| | |
| | | package com.qianwen.core.websocket.message; |
| | | |
| | | /* loaded from: blade-starter-websocket-9.3.0.0-SNAPSHOT.jar:org/springblade/core/websocket/message/AbstractJsonWebSocketMessage.class */ |
| | | public abstract class AbstractJsonWebSocketMessage implements JsonWebSocketMessage { |
| | | private final String type; |
| | | |
| | |
| | | this.type = type; |
| | | } |
| | | |
| | | @Override // com.qianwen.core.websocket.message.JsonWebSocketMessage |
| | | @Override |
| | | public String getType() { |
| | | return this.type; |
| | | } |
| | |
| | | package com.qianwen.core.websocket.message; |
| | | |
| | | /* loaded from: blade-starter-websocket-9.3.0.0-SNAPSHOT.jar:org/springblade/core/websocket/message/JsonWebSocketMessage.class */ |
| | | public interface JsonWebSocketMessage { |
| | | public static final String TYPE_FIELD = "type"; |
| | | |
| | |
| | | package com.qianwen.core.websocket.message; |
| | | |
| | | /* loaded from: blade-starter-websocket-9.3.0.0-SNAPSHOT.jar:org/springblade/core/websocket/message/PingJsonWebSocketMessage.class */ |
| | | public class PingJsonWebSocketMessage extends AbstractJsonWebSocketMessage { |
| | | public PingJsonWebSocketMessage() { |
| | | super(WebSocketMessageTypeEnum.PING.getValue()); |
| | |
| | | package com.qianwen.core.websocket.message; |
| | | |
| | | /* loaded from: blade-starter-websocket-9.3.0.0-SNAPSHOT.jar:org/springblade/core/websocket/message/PongJsonWebSocketMessage.class */ |
| | | public class PongJsonWebSocketMessage extends AbstractJsonWebSocketMessage { |
| | | public PongJsonWebSocketMessage() { |
| | | super(WebSocketMessageTypeEnum.PONG.getValue()); |
| | |
| | | package com.qianwen.core.websocket.message; |
| | | |
| | | /* loaded from: blade-starter-websocket-9.3.0.0-SNAPSHOT.jar:org/springblade/core/websocket/message/WebSocketMessageTypeEnum.class */ |
| | | public enum WebSocketMessageTypeEnum { |
| | | PING("ping"), |
| | | PONG("pong"); |