|
@@ -7,19 +7,23 @@ import com.hy.modules.bz.domain.BzAnchorStudio;
|
|
|
import com.hy.modules.bz.domain.BzGiftRecord;
|
|
import com.hy.modules.bz.domain.BzGiftRecord;
|
|
|
import com.hy.modules.bz.service.IBzAnchorStudioService;
|
|
import com.hy.modules.bz.service.IBzAnchorStudioService;
|
|
|
import com.hy.modules.bz.service.IBzGiftRecordService;
|
|
import com.hy.modules.bz.service.IBzGiftRecordService;
|
|
|
-import com.hy.modules.bz.service.IBzPlayerService;
|
|
|
|
|
|
|
+import com.hy.modules.bz.utils.TokenStatusManager;
|
|
|
import com.hy.modules.bz.websocket.message.GiftMessage;
|
|
import com.hy.modules.bz.websocket.message.GiftMessage;
|
|
|
import com.hy.modules.bz.websocket.message.MessageType;
|
|
import com.hy.modules.bz.websocket.message.MessageType;
|
|
|
import com.hy.modules.sys.domain.SysDictData;
|
|
import com.hy.modules.sys.domain.SysDictData;
|
|
|
import com.hy.modules.sys.service.SysDictDataService;
|
|
import com.hy.modules.sys.service.SysDictDataService;
|
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
|
|
+import org.springframework.data.redis.core.StringRedisTemplate;
|
|
|
import org.springframework.web.socket.WebSocketSession;
|
|
import org.springframework.web.socket.WebSocketSession;
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
|
import java.util.Date;
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
+import java.util.concurrent.ScheduledThreadPoolExecutor;
|
|
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
|
|
import static com.hy.modules.bz.utils.Constants.*;
|
|
import static com.hy.modules.bz.utils.Constants.*;
|
|
|
|
|
|
|
@@ -27,10 +31,11 @@ public class BarrageWebSocketServer extends AbstractWebSocketServer {
|
|
|
|
|
|
|
|
private static final String PLATFORM = "tiktok";
|
|
private static final String PLATFORM = "tiktok";
|
|
|
|
|
|
|
|
|
|
+ public static final String PATH = "/barrage/war";
|
|
|
|
|
+
|
|
|
private final Logger logger = LoggerFactory.getLogger(getClass());
|
|
private final Logger logger = LoggerFactory.getLogger(getClass());
|
|
|
|
|
|
|
|
- @Resource
|
|
|
|
|
- private IBzPlayerService playerService;
|
|
|
|
|
|
|
+ private static final ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(8);
|
|
|
|
|
|
|
|
@Resource
|
|
@Resource
|
|
|
private IBzAnchorStudioService anchorStudioService;
|
|
private IBzAnchorStudioService anchorStudioService;
|
|
@@ -41,6 +46,13 @@ public class BarrageWebSocketServer extends AbstractWebSocketServer {
|
|
|
@Resource
|
|
@Resource
|
|
|
private SysDictDataService sysDictDataService;
|
|
private SysDictDataService sysDictDataService;
|
|
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private StringRedisTemplate stringRedisTemplate;
|
|
|
|
|
+
|
|
|
|
|
+ @Value("${websocket.reconnect.time}")
|
|
|
|
|
+ private int reconnectTime;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
public void handleOpen(WebSocketSession session) {
|
|
public void handleOpen(WebSocketSession session) {
|
|
|
|
|
|
|
@@ -48,12 +60,22 @@ public class BarrageWebSocketServer extends AbstractWebSocketServer {
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public void handleClose(WebSocketSession session) {
|
|
public void handleClose(WebSocketSession session) {
|
|
|
- anchorStudioService.stopStudio(session.getAttributes().get(TOKEN_PRIFIX).toString());
|
|
|
|
|
|
|
+ TokenStatusManager.getInstance().sendSignal(session.getAttributes().get(TOKEN_PRIFIX).toString());
|
|
|
|
|
+ executor.schedule(() -> {
|
|
|
|
|
+ if(TokenStatusManager.getInstance().isInSignal(session.getAttributes().get(TOKEN_PRIFIX).toString())){
|
|
|
|
|
+ BzAnchorStudio anchorStudio = anchorStudioService.stopStudio(session.getAttributes().get(TOKEN_PRIFIX).toString());
|
|
|
|
|
+ if(null != anchorStudio){
|
|
|
|
|
+ stringRedisTemplate.delete(TOKEN_PRIFIX.concat(anchorStudio.getAnchorName()));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ },reconnectTime, TimeUnit.SECONDS);
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public void handleMessage(String message, WebSocketSession session) {
|
|
public void handleMessage(String message, WebSocketSession session) {
|
|
|
JSONObject object = JSON.parseObject(message);
|
|
JSONObject object = JSON.parseObject(message);
|
|
|
|
|
+
|
|
|
if(MessageType.GiftMessage.equals(MessageType.getMessageType(object.getString(MESSAGE_TYPE_CODE)))){
|
|
if(MessageType.GiftMessage.equals(MessageType.getMessageType(object.getString(MESSAGE_TYPE_CODE)))){
|
|
|
// 暂时只处理礼物消息
|
|
// 暂时只处理礼物消息
|
|
|
GiftMessage giftMessage = JSON.parseObject(message, GiftMessage.class);
|
|
GiftMessage giftMessage = JSON.parseObject(message, GiftMessage.class);
|
|
@@ -63,6 +85,7 @@ public class BarrageWebSocketServer extends AbstractWebSocketServer {
|
|
|
saveGiftRecord(giftMessage);
|
|
saveGiftRecord(giftMessage);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private BigDecimal getGiftScore(String giftName) throws RuntimeException{
|
|
private BigDecimal getGiftScore(String giftName) throws RuntimeException{
|