From 751a56838d63ea6820d11c88853cebd4c9d0d84c Mon Sep 17 00:00:00 2001 From: Monica <2646812117@qq.com> Date: Mon, 19 Aug 2024 11:59:17 +0800 Subject: [PATCH 1/8] Update ChannelAttrKey.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 使用预定义的常量 代替硬编码的字符串 --- .../src/main/java/com/bx/imserver/constant/ChannelAttrKey.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/im-server/src/main/java/com/bx/imserver/constant/ChannelAttrKey.java b/im-server/src/main/java/com/bx/imserver/constant/ChannelAttrKey.java index 85fe5b3..552aee5 100644 --- a/im-server/src/main/java/com/bx/imserver/constant/ChannelAttrKey.java +++ b/im-server/src/main/java/com/bx/imserver/constant/ChannelAttrKey.java @@ -16,6 +16,6 @@ public final class ChannelAttrKey { /** * 心跳次数 */ - public static final String HEARTBEAT_TIMES = "HEARTBEAt_TIMES"; + public static final String HEARTBEAT_TIMES = "HEARTBEAT_TIMES"; } From fb0aa7fd5c8a2765c10c4052e15da295d516b819 Mon Sep 17 00:00:00 2001 From: xsx <825657193@qq.com> Date: Tue, 20 Aug 2024 00:07:05 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E6=9A=82=E6=97=B6=E7=A7=BB=E9=99=A4docker?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- im-platform/Dockerfile | 13 ------------- im-server/Dockerfile | 13 ------------- 2 files changed, 26 deletions(-) delete mode 100644 im-platform/Dockerfile delete mode 100644 im-server/Dockerfile diff --git a/im-platform/Dockerfile b/im-platform/Dockerfile deleted file mode 100644 index 5dcdcd2..0000000 --- a/im-platform/Dockerfile +++ /dev/null @@ -1,13 +0,0 @@ -FROM openjdk:8-jdk-alpine - -ENV APP_FILE im-platform.jar -ENV APP_HOME /data/boxim - -WORKDIR $APP_HOME - -COPY ./dist/$APP_FILE $APP_HOME/ - -EXPOSE 8888 -EXPOSE 9001 - -CMD java -jar $APP_HOME/$APP_FILE --spring.profiles.active=prod diff --git a/im-server/Dockerfile b/im-server/Dockerfile deleted file mode 100644 index 7731603..0000000 --- a/im-server/Dockerfile +++ /dev/null @@ -1,13 +0,0 @@ -FROM openjdk:8-jdk-alpine - -ENV APP_FILE im-server.jar -ENV APP_HOME /data/boxim - -WORKDIR $APP_HOME - -COPY ./dist/$APP_FILE $APP_HOME/ - -EXPOSE 8877 -EXPOSE 8878 - -CMD java -jar $APP_HOME/$APP_FILE --spring.profiles.active=prod From c8e4298ef3ecec4cae87bb61c581f58a0ccb633e Mon Sep 17 00:00:00 2001 From: xsx <825657193@qq.com> Date: Tue, 20 Aug 2024 13:09:59 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E8=A1=A5=E5=85=85=E5=91=BC=E5=8F=AB?= =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WebrtcPrivateController.java | 2 +- .../service/impl/WebrtcGroupServiceImpl.java | 8 ++++++ .../impl/WebrtcPrivateServiceImpl.java | 26 +++++++++++++------ 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/im-platform/src/main/java/com/bx/implatform/controller/WebrtcPrivateController.java b/im-platform/src/main/java/com/bx/implatform/controller/WebrtcPrivateController.java index 3bf3764..ba67346 100644 --- a/im-platform/src/main/java/com/bx/implatform/controller/WebrtcPrivateController.java +++ b/im-platform/src/main/java/com/bx/implatform/controller/WebrtcPrivateController.java @@ -17,7 +17,7 @@ public class WebrtcPrivateController { private final WebrtcPrivateService webrtcPrivateService; - @OnlineCheck + @Operation(summary = "呼叫视频通话") @PostMapping("/call") public Result call(@RequestParam Long uid, @RequestParam(defaultValue = "video") String mode, diff --git a/im-platform/src/main/java/com/bx/implatform/service/impl/WebrtcGroupServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/impl/WebrtcGroupServiceImpl.java index 551e162..bac3c4d 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/impl/WebrtcGroupServiceImpl.java +++ b/im-platform/src/main/java/com/bx/implatform/service/impl/WebrtcGroupServiceImpl.java @@ -61,6 +61,7 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService { @Override public void setup(WebrtcGroupSetupDTO dto) { UserSession userSession = SessionContext.getSession(); + log.info("发起群通话,sid:{},群id:{}", userSession.getUserId(), dto.getGroupId()); groupService.getAndCheckById(dto.getGroupId()); if (dto.getUserInfos().size() > webrtcConfig.getMaxChannel()) { throw new GlobalException("最多支持" + webrtcConfig.getMaxChannel() + "人进行通话"); @@ -126,6 +127,7 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService { @Override public void accept(Long groupId) { UserSession userSession = SessionContext.getSession(); + log.info("接受群通话,sid:{},群id:{}", userSession.getUserId(), groupId); WebrtcGroupSession webrtcSession = getWebrtcSession(groupId); // 校验 if (!isExist(webrtcSession, userSession.getUserId())) { @@ -148,6 +150,7 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService { @Override public void reject(Long groupId) { UserSession userSession = SessionContext.getSession(); + log.info("拒绝群通话,sid:{},群id:{}", userSession.getUserId(), groupId); WebrtcGroupSession webrtcSession = getWebrtcSession(groupId); // 校验 if (!isExist(webrtcSession, userSession.getUserId())) { @@ -175,6 +178,7 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService { @Override public void failed(WebrtcGroupFailedDTO dto) { UserSession userSession = SessionContext.getSession(); + log.info("未能进入群通话,sid:{},群id:{},reason:{}", userSession.getUserId(), dto.getGroupId(), dto.getReason()); WebrtcGroupSession webrtcSession = getWebrtcSession(dto.getGroupId()); // 校验 if (!isExist(webrtcSession, userSession.getUserId())) { @@ -205,6 +209,7 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService { @Override public void join(Long groupId) { UserSession userSession = SessionContext.getSession(); + log.info("加入群通话,sid:{},群id:{},reason:{}", userSession.getUserId(), groupId); WebrtcGroupSession webrtcSession = getWebrtcSession(groupId); if (webrtcSession.getUserInfos().size() >= webrtcConfig.getMaxChannel()) { throw new GlobalException("人员已满,无法进入通话"); @@ -245,6 +250,7 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService { @Override public void invite(WebrtcGroupInviteDTO dto) { UserSession userSession = SessionContext.getSession(); + log.info("邀请成员加入群通话,sid:{},群id:{}", userSession.getUserId(), dto.getGroupId()); WebrtcGroupSession webrtcSession = getWebrtcSession(dto.getGroupId()); if (webrtcSession.getUserInfos().size() + dto.getUserInfos().size() > webrtcConfig.getMaxChannel()) { throw new GlobalException("最多支持" + webrtcConfig.getMaxChannel() + "人进行通话"); @@ -309,6 +315,7 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService { @Override public void cancel(Long groupId) { UserSession userSession = SessionContext.getSession(); + log.info("取消群通话,sid:{},群id:{}", userSession.getUserId(), groupId); WebrtcGroupSession webrtcSession = getWebrtcSession(groupId); if (!userSession.getUserId().equals(webrtcSession.getHost().getId())) { throw new GlobalException("只有发起人可以取消通话"); @@ -330,6 +337,7 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService { @Override public void quit(Long groupId) { UserSession userSession = SessionContext.getSession(); + log.info("退出群通话,sid:{},群id:{}", userSession.getUserId(), groupId); WebrtcGroupSession webrtcSession = getWebrtcSession(groupId); // 将用户从列表中移除 List inChatUsers = diff --git a/im-platform/src/main/java/com/bx/implatform/service/impl/WebrtcPrivateServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/impl/WebrtcPrivateServiceImpl.java index a741e09..dd84d91 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/impl/WebrtcPrivateServiceImpl.java +++ b/im-platform/src/main/java/com/bx/implatform/service/impl/WebrtcPrivateServiceImpl.java @@ -3,6 +3,7 @@ package com.bx.implatform.service.impl; import com.bx.imclient.IMClient; import com.bx.imcommon.model.IMPrivateMessage; import com.bx.imcommon.model.IMUserInfo; +import com.bx.implatform.annotation.OnlineCheck; import com.bx.implatform.contant.RedisKey; import com.bx.implatform.entity.PrivateMessage; import com.bx.implatform.enums.MessageStatus; @@ -37,9 +38,11 @@ public class WebrtcPrivateServiceImpl implements WebrtcPrivateService { private final PrivateMessageService privateMessageService; private final UserStateUtils userStateUtils; + @OnlineCheck @Override public void call(Long uid, String mode, String offer) { UserSession session = SessionContext.getSession(); + log.info("发起呼叫,sid:{},uid:{}", session.getUserId(), uid); // 创建webrtc会话 WebrtcPrivateSession webrtcSession = new WebrtcPrivateSession(); webrtcSession.setCallerId(session.getUserId()); @@ -48,11 +51,13 @@ public class WebrtcPrivateServiceImpl implements WebrtcPrivateService { webrtcSession.setMode(mode); // 校验 if (!imClient.isOnline(uid)) { - this.sendActMessage(webrtcSession,MessageStatus.UNSEND,"未接通"); + this.sendActMessage(webrtcSession, MessageStatus.UNSEND, "未接通"); + log.info("对方不在线,uid:{}", uid); throw new GlobalException("对方目前不在线"); } if (userStateUtils.isBusy(uid)) { - this.sendActMessage(webrtcSession,MessageStatus.UNSEND,"未接通"); + this.sendActMessage(webrtcSession, MessageStatus.UNSEND, "未接通"); + log.info("对方正忙,uid:{}", uid); throw new GlobalException("对方正忙"); } // 保存rtc session @@ -83,6 +88,7 @@ public class WebrtcPrivateServiceImpl implements WebrtcPrivateService { @Override public void accept(Long uid, @RequestBody String answer) { UserSession session = SessionContext.getSession(); + log.info("接受通话,sid:{},uid:{}", session.getUserId(), uid); // 查询webrtc会话 WebrtcPrivateSession webrtcSession = getWebrtcSession(session.getUserId(), uid); // 更新接受者信息 @@ -112,6 +118,7 @@ public class WebrtcPrivateServiceImpl implements WebrtcPrivateService { @Override public void reject(Long uid) { UserSession session = SessionContext.getSession(); + log.info("拒绝通话,sid:{},uid:{}", session.getUserId(), uid); // 查询webrtc会话 WebrtcPrivateSession webrtcSession = getWebrtcSession(session.getUserId(), uid); // 删除会话信息 @@ -135,12 +142,13 @@ public class WebrtcPrivateServiceImpl implements WebrtcPrivateService { sendMessage.setData(messageInfo); imClient.sendPrivateMessage(sendMessage); // 生成通话消息 - sendActMessage(webrtcSession, MessageStatus.READED,"已拒绝"); + sendActMessage(webrtcSession, MessageStatus.READED, "已拒绝"); } @Override public void cancel(Long uid) { UserSession session = SessionContext.getSession(); + log.info("取消通话,sid:{},uid:{}", session.getUserId(), uid); // 查询webrtc会话 WebrtcPrivateSession webrtcSession = getWebrtcSession(session.getUserId(), uid); // 删除会话信息 @@ -163,12 +171,13 @@ public class WebrtcPrivateServiceImpl implements WebrtcPrivateService { // 通知对方取消会话 imClient.sendPrivateMessage(sendMessage); // 生成通话消息 - sendActMessage(webrtcSession, MessageStatus.UNSEND,"已取消"); + sendActMessage(webrtcSession, MessageStatus.UNSEND, "已取消"); } @Override public void failed(Long uid, String reason) { UserSession session = SessionContext.getSession(); + log.info("通话失败,sid:{},uid:{},reason:{}", session.getUserId(), uid, reason); // 查询webrtc会话 WebrtcPrivateSession webrtcSession = getWebrtcSession(session.getUserId(), uid); // 删除会话信息 @@ -193,12 +202,13 @@ public class WebrtcPrivateServiceImpl implements WebrtcPrivateService { // 通知对方取消会话 imClient.sendPrivateMessage(sendMessage); // 生成消息 - sendActMessage(webrtcSession, MessageStatus.READED,"未接通"); + sendActMessage(webrtcSession, MessageStatus.READED, "未接通"); } @Override public void handup(Long uid) { UserSession session = SessionContext.getSession(); + log.info("挂断通话,sid:{},uid:{}", session.getUserId(), uid); // 查询webrtc会话 WebrtcPrivateSession webrtcSession = getWebrtcSession(session.getUserId(), uid); // 删除会话信息 @@ -223,7 +233,7 @@ public class WebrtcPrivateServiceImpl implements WebrtcPrivateService { // 通知对方取消会话 imClient.sendPrivateMessage(sendMessage); // 生成通话消息 - sendActMessage(webrtcSession, MessageStatus.READED,"通话时长 " + chatTimeText(webrtcSession)); + sendActMessage(webrtcSession, MessageStatus.READED, "通话时长 " + chatTimeText(webrtcSession)); } @Override @@ -286,7 +296,7 @@ public class WebrtcPrivateServiceImpl implements WebrtcPrivateService { return webrtcSession.getAcceptorTerminal(); } - private void sendActMessage(WebrtcPrivateSession rtcSession, MessageStatus status,String content) { + private void sendActMessage(WebrtcPrivateSession rtcSession, MessageStatus status, String content) { // 保存消息 PrivateMessage msg = new PrivateMessage(); msg.setSendId(rtcSession.getCallerId()); @@ -313,7 +323,7 @@ public class WebrtcPrivateServiceImpl implements WebrtcPrivateService { } private String chatTimeText(WebrtcPrivateSession rtcSession) { - long chatTime = (System.currentTimeMillis() - rtcSession.getChatTimeStamp())/1000; + long chatTime = (System.currentTimeMillis() - rtcSession.getChatTimeStamp()) / 1000; int min = Math.abs((int)chatTime / 60); int sec = Math.abs((int)chatTime % 60); String strTime = min < 10 ? "0" : ""; From 03435f6c00b9d4c8a063422529f1e181f92806aa Mon Sep 17 00:00:00 2001 From: xsx <825657193@qq.com> Date: Tue, 20 Aug 2024 13:19:07 +0800 Subject: [PATCH 4/8] fix bug --- .../java/com/bx/imserver/netty/processor/LoginProcessor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/im-server/src/main/java/com/bx/imserver/netty/processor/LoginProcessor.java b/im-server/src/main/java/com/bx/imserver/netty/processor/LoginProcessor.java index 06e71c4..780fe19 100644 --- a/im-server/src/main/java/com/bx/imserver/netty/processor/LoginProcessor.java +++ b/im-server/src/main/java/com/bx/imserver/netty/processor/LoginProcessor.java @@ -62,7 +62,7 @@ public class LoginProcessor extends AbstractMessageProcessor { AttributeKey terminalAttr = AttributeKey.valueOf(ChannelAttrKey.TERMINAL_TYPE); ctx.channel().attr(terminalAttr).set(terminal); // 初始化心跳次数 - AttributeKey heartBeatAttr = AttributeKey.valueOf("HEARTBEAt_TIMES"); + AttributeKey heartBeatAttr = AttributeKey.valueOf(ChannelAttrKey.HEARTBEAT_TIMES); ctx.channel().attr(heartBeatAttr).set(0L); // 在redis上记录每个user的channelId,15秒没有心跳,则自动过期 String key = String.join(":", IMRedisKey.IM_USER_SERVER_ID, userId.toString(), terminal.toString()); From 0ea69e9ef21fc5f76a4d6773dcd7b69d05749a66 Mon Sep 17 00:00:00 2001 From: Xiaoxi121 <2646812117@qq.com> Date: Sat, 24 Aug 2024 20:21:11 +0800 Subject: [PATCH 5/8] Update IMAutoConfiguration.java --- .../src/main/java/com/bx/imclient/IMAutoConfiguration.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/im-client/src/main/java/com/bx/imclient/IMAutoConfiguration.java b/im-client/src/main/java/com/bx/imclient/IMAutoConfiguration.java index 445cb45..c172099 100644 --- a/im-client/src/main/java/com/bx/imclient/IMAutoConfiguration.java +++ b/im-client/src/main/java/com/bx/imclient/IMAutoConfiguration.java @@ -7,7 +7,7 @@ import org.springframework.context.annotation.Configuration; @Slf4j @Configuration -@ComponentScan(basePackages = "com.bx.imclient,com.bx.imcommon") +@ComponentScan(basePackages = {"com.bx.imclient", "com.bx.imcommon"}) public class IMAutoConfiguration { } From 612f0b5468fe3533256e8eb857418d5d6e7ce3a5 Mon Sep 17 00:00:00 2001 From: xsx <825657193@qq.com> Date: Mon, 26 Aug 2024 01:11:43 +0800 Subject: [PATCH 6/8] =?UTF-8?q?fix:=20=E4=B8=80=E4=BA=9B=E5=B0=8Fbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/bx/implatform/controller/WebrtcGroupController.java | 2 +- .../com/bx/implatform/controller/WebrtcPrivateController.java | 2 +- .../src/main/java/com/bx/implatform/vo/PrivateMessageVO.java | 2 +- im-uniapp/common/messageType.js | 4 ++-- im-web/src/api/messageType.js | 4 ++-- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/im-platform/src/main/java/com/bx/implatform/controller/WebrtcGroupController.java b/im-platform/src/main/java/com/bx/implatform/controller/WebrtcGroupController.java index fb14e07..ab38634 100644 --- a/im-platform/src/main/java/com/bx/implatform/controller/WebrtcGroupController.java +++ b/im-platform/src/main/java/com/bx/implatform/controller/WebrtcGroupController.java @@ -114,7 +114,7 @@ public class WebrtcGroupController { return ResultUtils.success(webrtcGroupService.info(groupId)); } - @Operation(summary = "获取通话信息") + @Operation(summary = "心跳") @PostMapping("/heartbeat") public Result heartbeat(@RequestParam("groupId") Long groupId) { webrtcGroupService.heartbeat(groupId); diff --git a/im-platform/src/main/java/com/bx/implatform/controller/WebrtcPrivateController.java b/im-platform/src/main/java/com/bx/implatform/controller/WebrtcPrivateController.java index ba67346..7911999 100644 --- a/im-platform/src/main/java/com/bx/implatform/controller/WebrtcPrivateController.java +++ b/im-platform/src/main/java/com/bx/implatform/controller/WebrtcPrivateController.java @@ -68,7 +68,7 @@ public class WebrtcPrivateController { return ResultUtils.success(); } - @Operation(summary = "获取通话信息") + @Operation(summary = "心跳") @PostMapping("/heartbeat") public Result heartbeat(@RequestParam Long uid) { webrtcPrivateService.heartbeat(uid); diff --git a/im-platform/src/main/java/com/bx/implatform/vo/PrivateMessageVO.java b/im-platform/src/main/java/com/bx/implatform/vo/PrivateMessageVO.java index 608e854..a1bbebe 100644 --- a/im-platform/src/main/java/com/bx/implatform/vo/PrivateMessageVO.java +++ b/im-platform/src/main/java/com/bx/implatform/vo/PrivateMessageVO.java @@ -23,7 +23,7 @@ public class PrivateMessageVO { @Schema(description = " 发送内容") private String content; - @Schema(description = "消息内容类型 IMCmdType") + @Schema(description = "消息内容类型 MessageType") private Integer type; @Schema(description = " 状态") diff --git a/im-uniapp/common/messageType.js b/im-uniapp/common/messageType.js index 4ab602c..99d1c00 100644 --- a/im-uniapp/common/messageType.js +++ b/im-uniapp/common/messageType.js @@ -21,12 +21,12 @@ let isAction = function(type){ // 单人通话信令 let isRtcPrivate = function(type){ - return type>=100 && type < 300; + return type>=100 && type < 200; } // 多人通话信令 let isRtcGroup = function(type){ - return type>=200 && type < 400; + return type>=200 && type < 300; } diff --git a/im-web/src/api/messageType.js b/im-web/src/api/messageType.js index 4ab602c..99d1c00 100644 --- a/im-web/src/api/messageType.js +++ b/im-web/src/api/messageType.js @@ -21,12 +21,12 @@ let isAction = function(type){ // 单人通话信令 let isRtcPrivate = function(type){ - return type>=100 && type < 300; + return type>=100 && type < 200; } // 多人通话信令 let isRtcGroup = function(type){ - return type>=200 && type < 400; + return type>=200 && type < 300; } From 7f3f08dafda736a8ed17197530e7babb10b0bad7 Mon Sep 17 00:00:00 2001 From: xsx <825657193@qq.com> Date: Mon, 26 Aug 2024 01:19:51 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E5=A4=9A=E4=BD=99?= =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/WebrtcGroupServiceImpl.java | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/im-platform/src/main/java/com/bx/implatform/service/impl/WebrtcGroupServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/impl/WebrtcGroupServiceImpl.java index bac3c4d..519080d 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/impl/WebrtcGroupServiceImpl.java +++ b/im-platform/src/main/java/com/bx/implatform/service/impl/WebrtcGroupServiceImpl.java @@ -61,7 +61,6 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService { @Override public void setup(WebrtcGroupSetupDTO dto) { UserSession userSession = SessionContext.getSession(); - log.info("发起群通话,sid:{},群id:{}", userSession.getUserId(), dto.getGroupId()); groupService.getAndCheckById(dto.getGroupId()); if (dto.getUserInfos().size() > webrtcConfig.getMaxChannel()) { throw new GlobalException("最多支持" + webrtcConfig.getMaxChannel() + "人进行通话"); @@ -127,7 +126,6 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService { @Override public void accept(Long groupId) { UserSession userSession = SessionContext.getSession(); - log.info("接受群通话,sid:{},群id:{}", userSession.getUserId(), groupId); WebrtcGroupSession webrtcSession = getWebrtcSession(groupId); // 校验 if (!isExist(webrtcSession, userSession.getUserId())) { @@ -150,7 +148,6 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService { @Override public void reject(Long groupId) { UserSession userSession = SessionContext.getSession(); - log.info("拒绝群通话,sid:{},群id:{}", userSession.getUserId(), groupId); WebrtcGroupSession webrtcSession = getWebrtcSession(groupId); // 校验 if (!isExist(webrtcSession, userSession.getUserId())) { @@ -178,7 +175,6 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService { @Override public void failed(WebrtcGroupFailedDTO dto) { UserSession userSession = SessionContext.getSession(); - log.info("未能进入群通话,sid:{},群id:{},reason:{}", userSession.getUserId(), dto.getGroupId(), dto.getReason()); WebrtcGroupSession webrtcSession = getWebrtcSession(dto.getGroupId()); // 校验 if (!isExist(webrtcSession, userSession.getUserId())) { @@ -209,7 +205,6 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService { @Override public void join(Long groupId) { UserSession userSession = SessionContext.getSession(); - log.info("加入群通话,sid:{},群id:{},reason:{}", userSession.getUserId(), groupId); WebrtcGroupSession webrtcSession = getWebrtcSession(groupId); if (webrtcSession.getUserInfos().size() >= webrtcConfig.getMaxChannel()) { throw new GlobalException("人员已满,无法进入通话"); @@ -250,7 +245,6 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService { @Override public void invite(WebrtcGroupInviteDTO dto) { UserSession userSession = SessionContext.getSession(); - log.info("邀请成员加入群通话,sid:{},群id:{}", userSession.getUserId(), dto.getGroupId()); WebrtcGroupSession webrtcSession = getWebrtcSession(dto.getGroupId()); if (webrtcSession.getUserInfos().size() + dto.getUserInfos().size() > webrtcConfig.getMaxChannel()) { throw new GlobalException("最多支持" + webrtcConfig.getMaxChannel() + "人进行通话"); @@ -315,7 +309,6 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService { @Override public void cancel(Long groupId) { UserSession userSession = SessionContext.getSession(); - log.info("取消群通话,sid:{},群id:{}", userSession.getUserId(), groupId); WebrtcGroupSession webrtcSession = getWebrtcSession(groupId); if (!userSession.getUserId().equals(webrtcSession.getHost().getId())) { throw new GlobalException("只有发起人可以取消通话"); @@ -330,14 +323,13 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService { sendRtcMessage1(MessageType.RTC_GROUP_CANCEL, groupId, recvIds, "", false); // 发送文字提示信息 sendTipMessage(groupId, "通话结束"); - log.info("发起人取消群通话,userId:{},groupId:{}", userSession.getUserId(), groupId); + log.info("取消群通话,userId:{},groupId:{}", userSession.getUserId(), groupId); } @RedisLock(prefixKey = RedisKey.IM_LOCK_RTC_GROUP, key = "#groupId") @Override public void quit(Long groupId) { UserSession userSession = SessionContext.getSession(); - log.info("退出群通话,sid:{},群id:{}", userSession.getUserId(), groupId); WebrtcGroupSession webrtcSession = getWebrtcSession(groupId); // 将用户从列表中移除 List inChatUsers = @@ -380,7 +372,7 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService { WebrtcGroupSession webrtcSession = getWebrtcSession(dto.getGroupId()); IMUserInfo userInfo = findInChatUser(webrtcSession, dto.getUserId()); if (Objects.isNull(userInfo)) { - log.info("对方未加入群通话,userId:{},对方id:{},groupId:{}", userSession.getUserId(), dto.getUserId(), + log.warn("对方未加入群通话,userId:{},对方id:{},groupId:{}", userSession.getUserId(), dto.getUserId(), dto.getGroupId()); return; } @@ -397,7 +389,7 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService { IMUserInfo userInfo = findInChatUser(webrtcSession, dto.getUserId()); if (Objects.isNull(userInfo)) { // 对方未加入群通话 - log.info("对方未加入群通话,userId:{},对方id:{},groupId:{}", userSession.getUserId(), dto.getUserId(), + log.warn("对方未加入群通话,userId:{},对方id:{},groupId:{}", userSession.getUserId(), dto.getUserId(), dto.getGroupId()); return; } @@ -414,7 +406,7 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService { IMUserInfo userInfo = findInChatUser(webrtcSession, dto.getUserId()); if (Objects.isNull(userInfo)) { // 对方未加入群通话 - log.info("对方未加入群通话,无法同步candidate,userId:{},remoteUserId:{},groupId:{}", userSession.getUserId(), + log.warn("对方未加入群通话,无法同步candidate,userId:{},remoteUserId:{},groupId:{}", userSession.getUserId(), dto.getUserId(), dto.getGroupId()); return; } From 977b6c829bf40e36c694919e5988ce5acecbc210 Mon Sep 17 00:00:00 2001 From: xsx <825657193@qq.com> Date: Tue, 27 Aug 2024 01:16:17 +0800 Subject: [PATCH 8/8] =?UTF-8?q?fix:1.=E5=9B=BE=E7=89=87=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E6=92=A4=E5=9B=9E=E7=9A=84bug=202.=E4=BC=9A=E8=AF=9D=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=90=8E=E6=97=A0=E6=B3=95=E9=87=8D=E6=96=B0=E6=89=93?= =?UTF-8?q?=E5=BC=80=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- im-uniapp/store/chatStore.js | 2 ++ im-web/src/components/chat/ChatBox.vue | 4 ++-- im-web/src/store/chatStore.js | 15 ++++++++------- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/im-uniapp/store/chatStore.js b/im-uniapp/store/chatStore.js index 6ae6eef..cbd54bd 100644 --- a/im-uniapp/store/chatStore.js +++ b/im-uniapp/store/chatStore.js @@ -335,6 +335,8 @@ export default defineStore('chatStore', { chatKeys: chatKeys } uni.setStorageSync(key, chatsData) + // 清理已删除的会话 + this.chats = this.chats.filter(chat => !chat.delete) }, clear(state) { cacheChats = []; diff --git a/im-web/src/components/chat/ChatBox.vue b/im-web/src/components/chat/ChatBox.vue index 5e619b3..5bb837c 100644 --- a/im-web/src/components/chat/ChatBox.vue +++ b/im-web/src/components/chat/ChatBox.vue @@ -156,9 +156,9 @@ let msgInfo = JSON.parse(JSON.stringify(file.msgInfo)); msgInfo.content = JSON.stringify(data); msgInfo.receipt = this.isReceipt; - this.sendMessageRequest(msgInfo).then((id) => { + this.sendMessageRequest(msgInfo).then((m) => { msgInfo.loadStatus = 'ok'; - msgInfo.id = id; + msgInfo.id = m.id; this.isReceipt = false; this.$store.commit("insertMessage", msgInfo); }) diff --git a/im-web/src/store/chatStore.js b/im-web/src/store/chatStore.js index 551cd3e..ce08089 100644 --- a/im-web/src/store/chatStore.js +++ b/im-web/src/store/chatStore.js @@ -102,22 +102,22 @@ export default { chats[idx].stored = false; this.commit("saveToStorage"); }, - removePrivateChat(state,friendId){ + removePrivateChat(state, friendId) { let chats = this.getters.findChats(); for (let idx in chats) { if (chats[idx].type == 'PRIVATE' && chats[idx].targetId === friendId) { - this.commit("removeChat",idx) + this.commit("removeChat", idx) break; } } }, - removeGroupChat(state,groupId){ + removeGroupChat(state, groupId) { let chats = this.getters.findChats(); for (let idx in chats) { if (chats[idx].type == 'GROUP' && chats[idx].targetId === groupId) { - this.commit("removeChat",idx) + this.commit("removeChat", idx) break; } } @@ -322,6 +322,8 @@ export default { chatKeys: chatKeys } localForage.setItem(key, chatsData) + // 清理已删除的会话 + state.chats = state.chats.filter(chat => !chat.delete) }, clear(state) { cacheChats = [] @@ -337,12 +339,11 @@ export default { localForage.getItem(key).then((chatsData) => { if (!chatsData) { resolve(); - } - else if(chatsData.chats){ + } else if (chatsData.chats) { // 兼容旧版本 context.commit("initChats", chatsData); resolve(); - }else if (chatsData.chatKeys) { + } else if (chatsData.chatKeys) { const promises = []; chatsData.chatKeys.forEach(key => { promises.push(localForage.getItem(key))