Browse Source

新增在线人数统计

master
许孟阳 2 weeks ago
parent
commit
4ff5803904
  1. 2
      java/src/main/java/vip/xumy/idle/server/conf/IdleServerInitializer.java
  2. 18
      java/src/main/java/vip/xumy/idle/server/mapper/IActivityCountMapper.java
  3. 27
      java/src/main/java/vip/xumy/idle/server/pojo/ActivityCount.java
  4. 35
      java/src/main/java/vip/xumy/idle/server/worker/ActivityCountWorker.java
  5. 3
      src/tool/websocket.ts

2
java/src/main/java/vip/xumy/idle/server/conf/IdleServerInitializer.java

@ -1,5 +1,6 @@ @@ -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; @@ -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

18
java/src/main/java/vip/xumy/idle/server/mapper/IActivityCountMapper.java

@ -0,0 +1,18 @@ @@ -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<ActivityCount> {
}

27
java/src/main/java/vip/xumy/idle/server/pojo/ActivityCount.java

@ -0,0 +1,27 @@ @@ -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;
}

35
java/src/main/java/vip/xumy/idle/server/worker/ActivityCountWorker.java

@ -0,0 +1,35 @@ @@ -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);
}
}

3
src/tool/websocket.ts

@ -25,7 +25,9 @@ export const openWebSocket = (url) => { @@ -25,7 +25,9 @@ export const openWebSocket = (url) => {
};
websocket.onclose = () => {
console.log('websocket已断开');
setTimeout(() => {
openWebSocket(url);
}, 2000);
};
};
@ -33,5 +35,4 @@ export const registerHandler = (type, key, handler) => { @@ -33,5 +35,4 @@ export const registerHandler = (type, key, handler) => {
const handlers = msgHandlersMap[type] || {};
handlers[key] = handler;
msgHandlersMap[type] = handlers;
console.log(msgHandlersMap);
};

Loading…
Cancel
Save