diff --git a/java/src/main/java/vip/xumy/idle/server/conf/IdleServerInitializer.java b/java/src/main/java/vip/xumy/idle/server/conf/IdleServerInitializer.java index a205198..3e8db2e 100644 --- a/java/src/main/java/vip/xumy/idle/server/conf/IdleServerInitializer.java +++ b/java/src/main/java/vip/xumy/idle/server/conf/IdleServerInitializer.java @@ -1,5 +1,6 @@ package vip.xumy.idle.server.conf; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilder; @@ -10,6 +11,7 @@ import org.springframework.web.socket.server.standard.ServerEndpointExporter; @EnableAutoConfiguration(exclude = DataSourceAutoConfiguration.class) @ComponentScan(value = "vip.xumy.idle.server, vip.xumy.core") +@MapperScan("vip.xumy.idle.server.mapper") public class IdleServerInitializer extends SpringBootServletInitializer { @Override diff --git a/java/src/main/java/vip/xumy/idle/server/mapper/IActivityCountMapper.java b/java/src/main/java/vip/xumy/idle/server/mapper/IActivityCountMapper.java new file mode 100644 index 0000000..e10e468 --- /dev/null +++ b/java/src/main/java/vip/xumy/idle/server/mapper/IActivityCountMapper.java @@ -0,0 +1,18 @@ +package vip.xumy.idle.server.mapper; + +import org.apache.ibatis.annotations.Mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import vip.xumy.idle.server.pojo.ActivityCount; + +/** Ownership belongs to the company + * + * @author:mengyxu + * @date:2025年4月21日 + */ + +@Mapper +public interface IActivityCountMapper extends BaseMapper { + +} diff --git a/java/src/main/java/vip/xumy/idle/server/pojo/ActivityCount.java b/java/src/main/java/vip/xumy/idle/server/pojo/ActivityCount.java new file mode 100644 index 0000000..a3e5020 --- /dev/null +++ b/java/src/main/java/vip/xumy/idle/server/pojo/ActivityCount.java @@ -0,0 +1,27 @@ +package vip.xumy.idle.server.pojo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import lombok.Getter; +import lombok.Setter; + +/** + * Ownership belongs to the company + * + * @author:mengyxu + * @date:2025年4月21日 + */ +@Setter +@Getter +@TableName("activity_count") +public class ActivityCount { + + @TableId(type = IdType.AUTO) + private Integer id; + private String time; + private Integer num; + private String type; + +} diff --git a/java/src/main/java/vip/xumy/idle/server/worker/ActivityCountWorker.java b/java/src/main/java/vip/xumy/idle/server/worker/ActivityCountWorker.java new file mode 100644 index 0000000..5fdad39 --- /dev/null +++ b/java/src/main/java/vip/xumy/idle/server/worker/ActivityCountWorker.java @@ -0,0 +1,35 @@ +package vip.xumy.idle.server.worker; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import vip.xumy.core.utils.DateUtil; +import vip.xumy.idle.server.mapper.IActivityCountMapper; +import vip.xumy.idle.server.pojo.ActivityCount; +import vip.xumy.idle.server.service.WebSocketService; + +/** + * Ownership belongs to the company + * + * @author:mengyxu + * @date:2025年4月21日 + */ + +@Component +@EnableScheduling +public class ActivityCountWorker { + @Autowired + private IActivityCountMapper countMapper; + + @Scheduled(cron = "0 * * * * ?") + public void aliveCount() { + ActivityCount count = new ActivityCount(); + count.setTime(DateUtil.format()); + count.setNum(WebSocketService.CLIENT_MAP.size()); + count.setType("A"); + countMapper.insert(count); + } + +} diff --git a/src/tool/websocket.ts b/src/tool/websocket.ts index aa3b601..7185fc5 100644 --- a/src/tool/websocket.ts +++ b/src/tool/websocket.ts @@ -25,7 +25,9 @@ export const openWebSocket = (url) => { }; websocket.onclose = () => { console.log('websocket已断开'); - openWebSocket(url); + setTimeout(() => { + openWebSocket(url); + }, 2000); }; }; @@ -33,5 +35,4 @@ export const registerHandler = (type, key, handler) => { const handlers = msgHandlersMap[type] || {}; handlers[key] = handler; msgHandlersMap[type] = handlers; - console.log(msgHandlersMap); };