Commit 3e2b90a7 by Shadow

修复报错

parent 619c3ca3
package com.wecloud.im.biz.config;
import io.geekidea.springbootplus.framework.common.exception.SpringBootPlusConfigException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.extern.slf4j.Slf4j;
......@@ -53,6 +52,7 @@ import com.google.common.base.Function;
import com.google.common.base.Optional;
import com.google.common.base.Predicate;
import com.wecloud.im.biz.config.properties.SwaggerProperties;
import com.wecloud.im.core.common.exception.SpringBootPlusConfigException;
import com.wecloud.netty.dispatch.extend.ActionRequest;
import com.wecloud.netty.dispatch.extend.ArgumentBox;
......
......@@ -41,9 +41,9 @@ import com.wecloud.im.biz.module.message.service.ImClientService;
import com.wecloud.im.core.common.api.ApiCode;
import com.wecloud.im.core.common.api.ApiResult;
import com.wecloud.im.core.common.controller.BaseController;
import com.wecloud.im.core.shiro.jwt.JwtToken;
import com.wecloud.im.core.shiro.util.JwtUtil;
import com.wecloud.im.core.validator.groups.Add;
import com.wecloud.im.security.jwt.JwtToken;
import com.wecloud.im.security.util.JwtUtil;
import com.wecloud.im.server.cache.UserStateCacheManager;
/**
......
......@@ -41,7 +41,7 @@ import com.wecloud.im.core.common.exception.BusinessException;
import com.wecloud.im.core.log.annotation.OperationLog;
import com.wecloud.im.core.log.enums.OperationLogType;
import com.wecloud.im.core.pagination.Paging;
import com.wecloud.im.core.shiro.util.SecurityUtils;
import com.wecloud.im.security.util.SecurityUtils;
/**
* @author lixiaozhong
......@@ -66,15 +66,15 @@ public class ImFriendController extends BaseController {
@ApiOperation(value = "查询好友信息,只有自己的好友才查得到")
public ApiResult<ImFriendApplyDto> getFriendInfo(@RequestBody ImFriendBaseParam param) {
log.info("查询好友信息入参 {}", JSON.toJSONString(param));
if(param == null) {
if (param == null) {
return ApiResult.fail(ApiCode.PARAMETER_EXCEPTION, null);
}
ImClient currentClient = imClientService.getCurrentClient();
if(currentClient == null) {
if (currentClient == null) {
return ApiResult.fail(ApiCode.CLIENT_NOT_FOUNT, null);
}
ImClient friendClient = imClientService.getCacheImClient(currentClient.getFkAppid(), param.getFriendClientId());
if(friendClient == null) {
if (friendClient == null) {
return ApiResult.fail(ApiCode.CLIENT_NOT_FOUNT, null);
}
ImFriendApplyDto friendInfo = imFriendService.getFriendInfo(currentClient.getClientId(), friendClient.getClientId());
......@@ -88,13 +88,13 @@ public class ImFriendController extends BaseController {
@ApiOperation(value = "申请添加好友")
public ApiResult<Boolean> applyFriend(@RequestBody ImFriendApplyParam param) {
log.info("申请添加好友入参 {}", JSON.toJSONString(param));
if(param == null) {
if (param == null) {
return ApiResult.fail(ApiCode.PARAMETER_EXCEPTION, null);
}
ImClient currentClient = imClientService.getCurrentClient();
if(currentClient == null) {
if (currentClient == null) {
return ApiResult.fail(ApiCode.CLIENT_NOT_FOUNT, null);
}
ImClient friendClient = imClientService.getCacheImClient(currentClient.getFkAppid(), param.getFriendClientId());
......@@ -203,11 +203,11 @@ public class ImFriendController extends BaseController {
return ApiResult.fail(ApiCode.PARAMETER_EXCEPTION, null);
}
ImClient currentClient = imClientService.getCurrentClient();
if(currentClient == null) {
if (currentClient == null) {
return ApiResult.fail(ApiCode.CLIENT_NOT_FOUNT, null);
}
ImClient friendClient = imClientService.getCacheImClient(currentClient.getFkAppid(), param.getFriendClientId());
if(friendClient == null) {
if (friendClient == null) {
return ApiResult.fail(ApiCode.CLIENT_NOT_FOUNT, null);
}
......@@ -279,7 +279,7 @@ public class ImFriendController extends BaseController {
public ApiResult<Paging<ImFriendBaseDto>> getImFriendPageList(@RequestBody ImFriendPageParam pageParam) {
log.info("好友分页列表入参 {}", JSON.toJSONString(pageParam));
ImClient currentClient = imClientService.getCurrentClient();
if(currentClient == null) {
if (currentClient == null) {
return ApiResult.fail(ApiCode.CLIENT_NOT_FOUNT, null);
}
......@@ -296,10 +296,10 @@ public class ImFriendController extends BaseController {
public ApiResult<Boolean> batchCreateRecommend(@RequestBody ImCreateRecommendParam param) {
log.info("批量创建好友推荐入参 {}", JSON.toJSONString(param));
ImClient currentClient = imClientService.getCurrentClient();
if(currentClient == null) {
if (currentClient == null) {
return ApiResult.fail(ApiCode.CLIENT_NOT_FOUNT, null);
}
if(CollectionUtils.isEmpty(param.getRecommendFriends())) {
if (CollectionUtils.isEmpty(param.getRecommendFriends())) {
return ApiResult.fail(ApiCode.PARAMETER_EXCEPTION, null);
}
for (ImFriendRecommendDto p : param.getRecommendFriends()) {
......@@ -320,7 +320,7 @@ public class ImFriendController extends BaseController {
public ApiResult<Paging<ImFriendRecommendDto>> getImFriendRecommendPageList(@RequestBody ImFriendPageParam pageParam) {
log.info("好友推荐分页列表入参 {}", JSON.toJSONString(pageParam));
ImClient currentClient = imClientService.getCurrentClient();
if(currentClient == null) {
if (currentClient == null) {
return ApiResult.fail(ApiCode.CLIENT_NOT_FOUNT, null);
}
Paging<ImFriendRecommendDto> res = imFriendService.getImFriendRecommendPageList(currentClient.getId(), pageParam);
......@@ -336,7 +336,7 @@ public class ImFriendController extends BaseController {
public ApiResult<Boolean> batchDeleteRecommend(@RequestBody ImDeleteRecommendParam param) {
log.info("删除好友推荐入参 {}", JSON.toJSONString(param));
ImClient currentClient = imClientService.getCurrentClient();
if(currentClient == null) {
if (currentClient == null) {
return ApiResult.fail(ApiCode.CLIENT_NOT_FOUNT, null);
}
imFriendService.batchDeleteRecommend(currentClient, param.getFriendClientIds());
......
package com.wecloud.im.biz.module.message.controller.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 聊天设置入参
......@@ -8,8 +9,8 @@ import io.swagger.annotations.ApiModelProperty;
* @Date 2022年04月26日 11:52
* @Version 1.0
*/
@Datapublic
class ChatSettingParam {
@Data
public class ChatSettingParam {
@ApiModelProperty("客户端id")
String clientId;
......
......@@ -13,7 +13,7 @@ import javax.validation.constraints.NotNull;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.wecloud.im.core.common.entity.BaseEntity;
import com.wecloud.im.core.shiro.signature.Application;
import com.wecloud.im.security.signature.Application;
/**
* 第三方应用表
......
......@@ -41,8 +41,8 @@ import com.wecloud.im.core.common.exception.BusinessException;
import com.wecloud.im.core.common.service.impl.BaseServiceImpl;
import com.wecloud.im.core.pagination.PageInfo;
import com.wecloud.im.core.pagination.Paging;
import com.wecloud.im.core.shiro.util.SecurityUtils;
import com.wecloud.im.core.util.SnowflakeUtil;
import com.wecloud.im.security.util.SecurityUtils;
/**
* @Description 好友关系处理逻辑
......
......@@ -21,8 +21,8 @@ import com.wecloud.im.biz.module.message.service.ImApplicationService;
import com.wecloud.im.core.common.service.impl.BaseServiceImpl;
import com.wecloud.im.core.pagination.PageInfo;
import com.wecloud.im.core.pagination.Paging;
import com.wecloud.im.core.shiro.signature.Application;
import com.wecloud.im.core.shiro.signature.ApplicationService;
import com.wecloud.im.security.signature.Application;
import com.wecloud.im.security.signature.ApplicationService;
/**
* 第三方应用表 服务实现类
......
......@@ -34,7 +34,7 @@ import com.wecloud.im.biz.module.message.service.ImCallbackService;
import com.wecloud.im.biz.module.message.service.ImClientService;
import com.wecloud.im.biz.module.message.service.ImConversationMembersService;
import com.wecloud.im.biz.module.message.service.ImConversationService;
import com.wecloud.im.core.shiro.signature.SignUtils;
import com.wecloud.im.security.signature.SignUtils;
import com.wecloud.im.server.enums.MsgTypeEnum;
/**
......@@ -229,16 +229,4 @@ public class ImCallbackServiceImpl implements ImCallbackService {
headers.add("WECLOUD-IM-SIGNATURE", signature);
return headers;
}
public static void main(String[] args) {
// 计算 Signature (数据签名)
String appKey = "QizKVHcILRWp6Td2";
String appSecret = "287d04828099fb7de871e9dda845fa8b6b2302faf2ab3457";
String nonce = NanoId.randomNanoId();
String date = DateUtil.formatHttpDate(new Date());
String signature = SignUtils.buildSignature(appKey, appSecret, nonce, date);
System.out.println("nonce = " + nonce);
System.out.println("date = " + date);
System.out.println("signature = " + signature);
}
}
......@@ -24,8 +24,8 @@ import com.wecloud.im.core.common.exception.BusinessException;
import com.wecloud.im.core.common.service.impl.BaseServiceImpl;
import com.wecloud.im.core.pagination.PageInfo;
import com.wecloud.im.core.pagination.Paging;
import com.wecloud.im.core.shiro.util.SecurityUtils;
import com.wecloud.im.core.util.SnowflakeUtil;
import com.wecloud.im.security.util.SecurityUtils;
/**
* 黑名单 服务实现类
......
......@@ -25,23 +25,17 @@ import com.wecloud.im.biz.module.message.service.ImClientLoginService;
import com.wecloud.im.biz.module.message.service.ImClientService;
import com.wecloud.im.core.common.api.ApiCode;
import com.wecloud.im.core.common.api.ApiResult;
import com.wecloud.im.core.properties.JwtProperties;
import com.wecloud.im.core.shiro.cache.AppLoginRedisService;
import com.wecloud.im.core.shiro.jwt.JwtToken;
import com.wecloud.im.core.shiro.util.JwtUtil;
import com.wecloud.im.core.shiro.util.SecurityUtils;
import com.wecloud.im.core.util.SnowflakeUtil;
import com.wecloud.im.security.cache.AppLoginRedisService;
import com.wecloud.im.security.jwt.JwtToken;
import com.wecloud.im.security.properties.JwtProperties;
import com.wecloud.im.security.util.JwtUtil;
import com.wecloud.im.security.util.SecurityUtils;
@Service
@Slf4j
public class ImClientLoginServiceImpl implements ImClientLoginService {
// @Autowired
// private RedisUtils redisUtils;
// @Autowired
// private StringRedisTemplate redisTemplate;
private static JwtProperties jwtProperties;
@Autowired
private ImApplicationService imApplicationService;
......@@ -114,7 +108,8 @@ public class ImClientLoginServiceImpl implements ImClientLoginService {
// 保存redis
// redisTemplate.opsForValue().set("client:" + imApplication.getAppKey() + ":" + imTokenVerify.getClientId(), generateToken);
JwtToken jwtToken = JwtToken.build(generateToken, secret, jwtProperties.getExpireSecond(), imClient.getClientId(), imTokenVerify.getAppKey(), imTokenVerify.getPlatform());
JwtToken jwtToken = JwtToken.build(generateToken, secret, jwtProperties.getExpireSecond(), imClient.getId(),
imClient.getClientId(), imApplication.getId(), imTokenVerify.getAppKey(), imTokenVerify.getPlatform());
appLoginRedisService.cacheLoginInfo(jwtToken);
TokenVo tokenVo = new TokenVo();
......@@ -163,8 +158,9 @@ public class ImClientLoginServiceImpl implements ImClientLoginService {
// 生成token
String generateToken = JwtUtil.generateToken(clientId + "", appKey, appSecret, Duration.ofDays(99999),
deviceType);
JwtToken jwtToken = JwtToken.build(generateToken, appSecret, jwtProperties.getExpireSecond(), clientId + "",
appKey, deviceType);
JwtToken jwtToken = JwtToken.build(generateToken, appSecret, jwtProperties.getExpireSecond(),
client.getId(), clientId + "",
appId, appKey, deviceType);
appLoginRedisService.cacheLoginInfo(jwtToken);
TokenVo tokenVo = new TokenVo();
......
......@@ -58,10 +58,10 @@ import com.wecloud.im.core.common.exception.BusinessException;
import com.wecloud.im.core.common.service.impl.BaseServiceImpl;
import com.wecloud.im.core.pagination.PageInfo;
import com.wecloud.im.core.pagination.Paging;
import com.wecloud.im.core.shiro.jwt.JwtToken;
import com.wecloud.im.core.shiro.util.JwtUtil;
import com.wecloud.im.core.shiro.util.SecurityUtils;
import com.wecloud.im.core.util.SnowflakeUtil;
import com.wecloud.im.security.jwt.JwtToken;
import com.wecloud.im.security.util.JwtUtil;
import com.wecloud.im.security.util.SecurityUtils;
import com.wecloud.im.server.utils.RedisUtils;
import com.wecloud.netty.dispatch.extend.ActionRequest;
import com.wecloud.netty.dispatch.util.ActionRequestHolder;
......
......@@ -48,8 +48,8 @@ import com.wecloud.im.core.common.exception.BusinessException;
import com.wecloud.im.core.common.service.impl.BaseServiceImpl;
import com.wecloud.im.core.pagination.PageInfo;
import com.wecloud.im.core.pagination.Paging;
import com.wecloud.im.core.shiro.util.SecurityUtils;
import com.wecloud.im.core.util.JsonUtils;
import com.wecloud.im.security.util.SecurityUtils;
import com.wecloud.im.server.enums.MsgTypeEnum;
import com.wecloud.im.server.enums.WsResponseCmdEnum;
import com.wecloud.im.server.model.WsResponse;
......
......@@ -91,9 +91,9 @@ import com.wecloud.im.core.common.exception.BusinessException;
import com.wecloud.im.core.common.service.impl.BaseServiceImpl;
import com.wecloud.im.core.pagination.PageInfo;
import com.wecloud.im.core.pagination.Paging;
import com.wecloud.im.core.shiro.util.SecurityUtils;
import com.wecloud.im.core.util.JsonUtils;
import com.wecloud.im.core.util.SnowflakeUtil;
import com.wecloud.im.security.util.SecurityUtils;
import com.wecloud.im.server.enums.MsgTypeEnum;
import com.wecloud.im.server.enums.WsResponseCmdEnum;
import com.wecloud.im.server.utils.RedisUtils;
......
......@@ -39,9 +39,9 @@ import com.wecloud.im.biz.module.message.service.ImConversationService;
import com.wecloud.im.biz.module.message.service.ImGroupService;
import com.wecloud.im.biz.module.message.service.ImMessageService;
import com.wecloud.im.core.common.exception.BusinessException;
import com.wecloud.im.core.shiro.util.SecurityUtils;
import com.wecloud.im.core.util.JsonUtils;
import com.wecloud.im.core.util.SnowflakeUtil;
import com.wecloud.im.security.util.SecurityUtils;
import com.wecloud.im.server.enums.MsgTypeEnum;
import com.wecloud.im.server.enums.WsResponseCmdEnum;
import com.wecloud.imserver.client.model.enums.DeviceTypeEnum;
......
......@@ -77,9 +77,9 @@ import com.wecloud.im.core.common.exception.BusinessException;
import com.wecloud.im.core.common.service.impl.BaseServiceImpl;
import com.wecloud.im.core.pagination.PageInfo;
import com.wecloud.im.core.pagination.Paging;
import com.wecloud.im.core.shiro.util.SecurityUtils;
import com.wecloud.im.core.util.JsonUtils;
import com.wecloud.im.core.util.SnowflakeUtil;
import com.wecloud.im.security.util.SecurityUtils;
import com.wecloud.im.server.enums.MsgTypeEnum;
import com.wecloud.im.server.enums.WsResponseCmdEnum;
import com.wecloud.im.server.model.WsResponse;
......@@ -351,7 +351,7 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
ImClient imClientSender = contextService.getImClientIfNotNullOrThrow();
ImApplication imApplication = contextService.getImApplicationIfNotNullOrThrow(imClientSender.getFkAppid());
// todo 单向撤回、双向撤回开关可配置
Boolean deleteOther = true;
boolean deleteOther = true;
List<ImMessage> imMessageList = this.listByIds(param.getMsgIds());
if (CollectionUtils.isEmpty(imMessageList)) {
throw new BusinessException("查无消息");
......@@ -521,6 +521,7 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
return new Paging<>(iPage);
}
@Override
public Paging<OfflineMsgDto> getHistoryMsgConversationIdNew(ImHistoryMessagePageParam param) {
Page<ImMessage> page = new PageInfo<>(param, OrderItem.desc(getLambdaColumn(ImMessage::getCreateTime)));
......
......@@ -29,6 +29,10 @@
<groupId>com.wecloud</groupId>
<artifactId>im-common-core</artifactId>
</dependency>
<dependency>
<groupId>com.wecloud</groupId>
<artifactId>im-common-security</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
......
......@@ -53,10 +53,6 @@ import com.wecloud.im.core.ip.service.IpAddressService;
import com.wecloud.im.core.log.annotation.Module;
import com.wecloud.im.core.log.annotation.OperationLog;
import com.wecloud.im.core.log.annotation.OperationLogIgnore;
import com.wecloud.im.core.shiro.service.LoginToken;
import com.wecloud.im.core.shiro.service.LoginUsername;
import com.wecloud.im.core.shiro.util.JwtTokenUtil;
import com.wecloud.im.core.shiro.util.JwtUtil;
import com.wecloud.im.core.util.AnsiUtil;
import com.wecloud.im.core.util.ClientInfoUtil;
import com.wecloud.im.core.util.DateUtil;
......@@ -70,6 +66,10 @@ import com.wecloud.im.log.entity.SysOperationLog;
import com.wecloud.im.log.properties.SpringBootPlusAopProperties;
import com.wecloud.im.log.service.SysLoginLogService;
import com.wecloud.im.log.service.SysOperationLogService;
import com.wecloud.im.security.service.LoginToken;
import com.wecloud.im.security.service.LoginUsername;
import com.wecloud.im.security.util.JwtTokenUtil;
import com.wecloud.im.security.util.JwtUtil;
/**
* <p>
......
......@@ -13,9 +13,9 @@ import org.springframework.stereotype.Service;
import com.wecloud.im.core.constant.ClientLoginRedisKey;
import com.wecloud.im.core.constant.CommonRedisKey;
import com.wecloud.im.core.properties.JwtProperties;
import com.wecloud.im.security.cache.AppLoginRedisService;
import com.wecloud.im.security.jwt.JwtToken;
import com.wecloud.im.security.properties.JwtProperties;
import com.wecloud.im.security.vo.LoginUserRedisVo;
import com.wecloud.im.security.vo.LoginUserVo;
......
......@@ -29,11 +29,21 @@ public class JwtToken implements HostAuthenticationToken {
private String host;
/**
* client id
*/
private Long fkClientId;
/**
* 登录clientId
*/
private String clientId;
/**
* appId
*/
private Long appId;
/**
* app
*/
private String appKey;
......@@ -68,12 +78,15 @@ public class JwtToken implements HostAuthenticationToken {
*/
private Integer platform;
public static JwtToken build(String token, String salt, long expireSecond, String clientId, String appKey, Integer platform) {
public static JwtToken build(String token, String salt, long expireSecond, Long fkClientId,
String clientId, Long appId, String appKey, Integer platform) {
DecodedJWT decodedJwt = JwtUtil.getJwtInfo(token);
Date createDate = decodedJwt.getIssuedAt();
Date expireDate = decodedJwt.getExpiresAt();
JwtToken jwtToken = new JwtToken();
jwtToken.setClientId(clientId);
jwtToken.setFkClientId(fkClientId);
jwtToken.setAppId(appId);
jwtToken.setAppKey(appKey);
jwtToken.setToken(token);
jwtToken.setHost(IpUtil.getRequestIp());
......
......@@ -113,7 +113,8 @@ public class SecurityFilter extends AuthenticatingFilter {
if (jwtToken == null) {
throw new AuthenticationException("Redis Token不存在,token:" + token);
}
return JwtToken.build(token, jwtToken.getSalt(), jwtToken.getExpireSecond(), jwtToken.getClientId(), jwtToken.getAppKey(), jwtToken.getPlatform());
return JwtToken.build(token, jwtToken.getSalt(), jwtToken.getExpireSecond(),
jwtToken.getFkClientId(), jwtToken.getClientId(), jwtToken.getAppId(), jwtToken.getAppKey(), jwtToken.getPlatform());
}
......
......@@ -7,8 +7,8 @@ import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import com.wecloud.im.core.properties.JwtProperties;
import com.wecloud.im.core.util.HttpServletRequestUtil;
import com.wecloud.im.security.properties.JwtProperties;
/**
* JwtToken工具类
......
......@@ -4,7 +4,8 @@ import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.crypto.SecureRandomNumberGenerator;
import com.wecloud.im.core.properties.JwtProperties;
import com.wecloud.im.security.properties.JwtProperties;
/**
* 盐值包装工具类
......
......@@ -48,6 +48,10 @@
<groupId>com.wecloud</groupId>
<artifactId>im-common-core</artifactId>
</dependency>
<dependency>
<groupId>com.wecloud</groupId>
<artifactId>im-common-security</artifactId>
</dependency>
</dependencies>
<properties>
......
......@@ -23,18 +23,14 @@ import com.auth0.jwt.interfaces.DecodedJWT;
import com.wecloud.im.core.common.api.ApiCode;
import com.wecloud.im.core.common.api.ApiResult;
import com.wecloud.im.core.constant.CommonConstant;
import com.wecloud.im.core.shiro.jwt.JwtToken;
import com.wecloud.im.core.shiro.service.ShiroLoginService;
import com.wecloud.im.core.shiro.util.JwtUtil;
import com.wecloud.im.core.util.JsonUtils;
import com.wecloud.im.entity.ImApplication;
import com.wecloud.im.entity.ImClient;
import com.wecloud.im.event.ClientOnlineStatusChangeEvent;
import com.wecloud.im.security.jwt.JwtToken;
import com.wecloud.im.security.service.ShiroLoginService;
import com.wecloud.im.security.util.JwtUtil;
import com.wecloud.im.server.event.ChannelStatusChangeEvent;
import com.wecloud.im.server.manager.ChannelManager;
import com.wecloud.im.server.model.WsConstants;
import com.wecloud.im.server.utils.FullHttpRequestUtils;
import com.wecloud.im.service.ImApplicationService;
import com.wecloud.im.service.ImClientService;
/**
* @Description 聊天模块 http请求处理
......@@ -55,12 +51,6 @@ public class NettyApiRequest {
private WsReadHandler appImReadHandler;
@Autowired
private ImClientService imClientService;
@Autowired
private ImApplicationService imApplicationService;
@Autowired
private ApplicationEventPublisher eventPublisher;
/**
......@@ -146,31 +136,21 @@ public class NettyApiRequest {
// 添加长连接handler
ctx.pipeline().addLast("appImHandler", appImReadHandler);
ImApplication app = imApplicationService.getCacheAppByAppKey(appKey);
if (app == null) {
log.warn("根据appKey: {} 查找不到 imApplication!", appKey);
return;
}
ImClient client = imClientService.getCacheImClient(app.getId(), outClientId);
// 设置属性值 userid - channel
ctx.channel().attr(ChannelManager.CLIENT_ID).set(client.getId());
ctx.channel().attr(ChannelManager.CLIENT_ID).set(jwtToken.getFkClientId());
ctx.channel().attr(ChannelManager.PLATFORM).set(jwtToken.getPlatform());
ctx.channel().attr(ChannelManager.APPLICATION_ID).set(app.getId());// 读空闲的计数=0
ctx.channel().attr(ChannelManager.APPLICATION_ID).set(jwtToken.getAppId());// 读空闲的计数=0
ctx.channel().attr(ChannelManager.READ_IDLE_TIMES).set(0);// 读空闲的计数=0
// 保存用户上下文对象
appUserChannelsService.online(client.getId(), jwtToken.getPlatform(), (NioSocketChannel) ctx.channel());
appUserChannelsService.online(jwtToken.getFkClientId(), jwtToken.getPlatform(), (NioSocketChannel) ctx.channel());
// 发布客户端在线状态变化-上线事件
Long appId = app.getId();
String clientId = client.getClientId();
Long appId = jwtToken.getAppId();
Integer platform = jwtToken.getPlatform();
long time = System.currentTimeMillis();
String clientIp = ctx.channel().remoteAddress().toString();
ClientOnlineStatusChangeEvent clientOnlineStatusChangeEvent = new ClientOnlineStatusChangeEvent(appId,
client.getId(), 1, platform, time, clientIp);
ChannelStatusChangeEvent clientOnlineStatusChangeEvent = new ChannelStatusChangeEvent(appId, jwtToken.getFkClientId(), 1, platform, time, clientIp);
eventPublisher.publishEvent(clientOnlineStatusChangeEvent);
//移除当前api处理handler, 不再参与长连接处理
ctx.pipeline().remove("SingleHttpRequestHandler");
......
......@@ -75,7 +75,6 @@ public class WsReadHandler extends SimpleChannelInboundHandler<TextWebSocketFram
log.info("收到心跳应用Pong,clientId:" + clientId);
return;
}
// AbstractImCmdStrategy.process(clientId, ctx, data);
generalMessageHandler.doMessage(clientId, ctx, data);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment