This commit is contained in:
dute7liang
2023-12-29 02:53:02 +08:00
parent 83d87d0927
commit 973c9545af
6 changed files with 130 additions and 24 deletions

View File

@@ -1,6 +1,8 @@
package com.ruoyi.cai.ws.processon;
import cn.hutool.core.date.DateUtil;
import com.ruoyi.cai.agora.Agora;
import com.ruoyi.cai.executor.ExecutorConstant;
import com.ruoyi.cai.service.CaiAnchorService;
import com.ruoyi.cai.service.CaiUserService;
import com.ruoyi.cai.ws.bean.FdCtxData;
@@ -20,6 +22,7 @@ import org.springframework.stereotype.Component;
import org.springframework.web.socket.WebSocketSession;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Component
@@ -40,6 +43,8 @@ public class OpenLogic implements IOpenLogic {
private CaiUserService userService;
@Autowired
private CaiAnchorService anchorService;
@Autowired
private Agora agora;
@Override
public void processOn(WebSocketSession session) {
@@ -104,25 +109,20 @@ public class OpenLogic implements IOpenLogic {
}
// 已经接通
if(room.isOnline()){
// 如果视频也掉线了,则重连的时候发送消息提示
// sgo(function() use ($rs){
// $users = Agora::getChannelUsers($rs->room->id);
// if (in_array($rs->caller->id, $users)) {
// return;
// }
//
// $rs->sendToCurrent(WsMsgGen::startVideo($rs->room->id, $rs->callTime()))
// ->sendToCurrent(WsMsgGen::sysNotice('重连成功,房间已通话 '.gmdate('H:i:s', $rs->callTime())))
// ->sendToReceiver(WsMsgGen::sysNotice('对方已重连成功'));
// });
Long callTime = roomService.getCallTime(room);
RoomWebSocketUtil.sendSendMessage(sessionKey,WsRMsgGen.startVideo(room.getRoomId(), callTime));
RoomWebSocketUtil.sendSendMessage(sessionKey,WsRMsgGen.sysNotice("重连成功,房间已通话(转换成时分秒) "));
String sessionKeyReceiver = roomCtxCache.getSessionKeyReceiverByRoomId(room.getRoomId());
if(StringUtils.isNotEmpty(sessionKeyReceiver)){
RoomWebSocketUtil.sendSendMessage(sessionKey,WsRMsgGen.sysNotice("对方已重连成功"));
}
ExecutorConstant.ROOM_EXECUTOR.execute(() -> {
// 如果视频也掉线了,则重连的时候发送消息提示
List<String> channelUsers = agora.getChannelUsers(room.getRoomId());
if(channelUsers.contains(userId+"")){
return;
}
Long callTime = roomService.getCallTime(room);
RoomWebSocketUtil.sendSendMessage(sessionKey,WsRMsgGen.startVideo(room.getRoomId(), callTime));
RoomWebSocketUtil.sendSendMessage(sessionKey,WsRMsgGen.sysNotice("重连成功,房间已通话(转换成时分秒) "));
String sessionKeyReceiver = roomCtxCache.getSessionKeyReceiverByRoomId(room.getRoomId());
if(StringUtils.isNotEmpty(sessionKeyReceiver)){
RoomWebSocketUtil.sendSendMessage(sessionKey,WsRMsgGen.sysNotice("对方已重连成功"));
}
});
}
if(RoomStatusEnums.STATUS_CREATE.getCode().equals(status) ||
RoomStatusEnums.STATUS_CALLER_CONNECT.getCode().equals(status) ||
@@ -131,7 +131,7 @@ public class OpenLogic implements IOpenLogic {
RoomWebSocketUtil.sendSendMessage(sessionKey, WsRMsgGen.response(room.getRoomId()));
}
if(isFirst){
// 给对方发送呼叫页面
// 给对方发送呼叫页面 TODO
}
}
public void receiverConnection(String sessionKey,Room room,Long userId){

View File

@@ -1,16 +1,23 @@
package com.ruoyi.cai.ws.util;
import com.esotericsoftware.minlog.Log;
import com.ruoyi.cai.ws.constant.HangUpEnums;
import com.ruoyi.websocket.dto.WsRMsgGen;
import com.ruoyi.websocket.util.RoomWebSocketUtil;
import com.ruoyi.websocket.util.WebSocketUtils;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class WsExceptionUtil {
public static void throwException(String sessionKey, String message, HangUpEnums hangUpType, String roomId){
if(hangUpType == null){
hangUpType = HangUpEnums.OTHER;
}
RoomWebSocketUtil.sendSendMessage(sessionKey, WsRMsgGen.hangup(message,roomId,hangUpType.getCode()));
boolean close = WebSocketUtils.close(sessionKey);
if(!close){
log.warn("ws连接时发现异常{}sessionKey {} roomid {}", message, sessionKey, roomId);
}
}
public String handUp(String sessionKey,String message,String roomId,HangUpEnums hang){
return null;
}
}