package com.hivekion.thread; import cn.hutool.extra.spring.SpringUtil; import com.alibaba.fastjson.JSON; import com.hivekion.Global; import com.hivekion.common.entity.RequestCmdInfo; import com.hivekion.common.entity.ResponseCmdInfo; import com.hivekion.room.RoomManager; import com.hivekion.room.bean.Room; import com.hivekion.scenario.entity.ScenarioResource; import java.util.HashMap; import java.util.Map; import lombok.extern.slf4j.Slf4j; /** * [类的简要说明] *
* [详细描述,可选] *
*
* @author LiDongYU
* @since 2025/7/22
*/
@Slf4j
public class HandleReceiveRunnable implements Runnable {
@Override
public void run() {
while (!Thread.currentThread().isInterrupted()) {
try {
RequestCmdInfo requestCmdInfo = Global.receiveCmdInfoQueue.take();
handleMessage(requestCmdInfo);
//消息分发业务bean处理
if (SpringUtil.getBean(WebsocketMsgWrapper.class) != null) {
try {
WebsocketMsgWrapper websocketMsgWrapper = SpringUtil.getBean(WebsocketMsgWrapper.class);
websocketMsgWrapper.msgHandle(requestCmdInfo.getScenarioId(), requestCmdInfo.getRoom(),
requestCmdInfo.getResourceId(), requestCmdInfo.getMessage());
} catch (Exception e) {
log.error("error::", e);
}
} else {
log.warn("==================WebsocketMsgWrapper is null==========================");
}
} catch (Exception e) {
log.error("error::", e);
}
}
}
private void handleMessage(RequestCmdInfo requestCmdInfo) {
try {
switch (requestCmdInfo.getCmdType()) {
case "get_init_path":
handleGetInitPath(requestCmdInfo);
break;
default:
break;
}
} catch (Exception e) {
log.error("error::", e);
}
}
private void handleGetInitPath(RequestCmdInfo requestCmdInfo) {
log.info("接收到请求路线信息::{}", JSON.toJSONString(requestCmdInfo));
Room room = RoomManager.getRoom(requestCmdInfo.getRoom());
if (room != null) {
Map