Browse Source

代码优化

master
xsx 2 years ago
parent
commit
e87754f4a4
  1. 1
      im-platform/src/main/java/com/bx/implatform/IMPlatformApp.java
  2. 35
      im-server/src/main/java/com/bx/imserver/config/RedisConfig.java
  3. 10
      im-server/src/main/java/com/bx/imserver/netty/processor/GroupMessageProcessor.java
  4. 1
      im-server/src/main/java/com/bx/imserver/netty/processor/HeartbeatProcessor.java
  5. 6
      im-server/src/main/java/com/bx/imserver/netty/processor/PrivateMessageProcessor.java
  6. 6
      im-server/src/main/java/com/bx/imserver/netty/processor/SystemMessageProcessor.java
  7. 4
      im-server/src/main/java/com/bx/imserver/netty/tcp/TcpSocketServer.java
  8. 2
      im-server/src/main/java/com/bx/imserver/netty/ws/WebSocketServer.java

1
im-platform/src/main/java/com/bx/implatform/IMPlatformApp.java

@ -11,6 +11,7 @@ import org.springframework.context.annotation.EnableAspectJAutoProxy;
@Slf4j @Slf4j
@EnableAspectJAutoProxy(exposeProxy = true) @EnableAspectJAutoProxy(exposeProxy = true)
@ComponentScan(basePackages = {"com.bx"})
@MapperScan(basePackages = {"com.bx.implatform.mapper"}) @MapperScan(basePackages = {"com.bx.implatform.mapper"})
@SpringBootApplication @SpringBootApplication
public class IMPlatformApp { public class IMPlatformApp {

35
im-server/src/main/java/com/bx/imserver/config/RedisConfig.java

@ -1,35 +0,0 @@
package com.bx.imserver.config;
import com.alibaba.fastjson.support.spring.FastJsonRedisSerializer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;
@Configuration
public class RedisConfig {
@Primary
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
// 设置值(value)的序列化采用FastJsonRedisSerializer
redisTemplate.setValueSerializer(fastJsonRedisSerializer());
redisTemplate.setHashValueSerializer(fastJsonRedisSerializer());
// 设置键(key)的序列化采用StringRedisSerializer。
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
public FastJsonRedisSerializer fastJsonRedisSerializer() {
return new FastJsonRedisSerializer<>(Object.class);
}
}

10
im-server/src/main/java/com/bx/imserver/netty/processor/GroupMessageProcessor.java

@ -8,11 +8,11 @@ import com.bx.imcommon.model.IMRecvInfo;
import com.bx.imcommon.model.IMSendInfo; import com.bx.imcommon.model.IMSendInfo;
import com.bx.imcommon.model.IMSendResult; import com.bx.imcommon.model.IMSendResult;
import com.bx.imcommon.model.IMUserInfo; import com.bx.imcommon.model.IMUserInfo;
import com.bx.imcommon.mq.RedisMQTemplate;
import com.bx.imserver.netty.UserChannelCtxMap; import com.bx.imserver.netty.UserChannelCtxMap;
import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelHandlerContext;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.List; import java.util.List;
@ -23,7 +23,7 @@ import java.util.Objects;
@RequiredArgsConstructor @RequiredArgsConstructor
public class GroupMessageProcessor extends AbstractMessageProcessor<IMRecvInfo> { public class GroupMessageProcessor extends AbstractMessageProcessor<IMRecvInfo> {
private final RedisTemplate<String, Object> redisTemplate; private final RedisMQTemplate redisMQTemplate;
@Override @Override
public void process(IMRecvInfo recvInfo) { public void process(IMRecvInfo recvInfo) {
@ -35,7 +35,7 @@ public class GroupMessageProcessor extends AbstractMessageProcessor<IMRecvInfo>
ChannelHandlerContext channelCtx = UserChannelCtxMap.getChannelCtx(receiver.getId(), receiver.getTerminal()); ChannelHandlerContext channelCtx = UserChannelCtxMap.getChannelCtx(receiver.getId(), receiver.getTerminal());
if (!Objects.isNull(channelCtx)) { if (!Objects.isNull(channelCtx)) {
// 推送消息到用户 // 推送消息到用户
IMSendInfo sendInfo = new IMSendInfo(); IMSendInfo<Object> sendInfo = new IMSendInfo<>();
sendInfo.setCmd(IMCmdType.GROUP_MESSAGE.code()); sendInfo.setCmd(IMCmdType.GROUP_MESSAGE.code());
sendInfo.setData(recvInfo.getData()); sendInfo.setData(recvInfo.getData());
channelCtx.channel().writeAndFlush(sendInfo); channelCtx.channel().writeAndFlush(sendInfo);
@ -58,14 +58,14 @@ public class GroupMessageProcessor extends AbstractMessageProcessor<IMRecvInfo>
private void sendResult(IMRecvInfo recvInfo, IMUserInfo receiver, IMSendCode sendCode) { private void sendResult(IMRecvInfo recvInfo, IMUserInfo receiver, IMSendCode sendCode) {
if (recvInfo.getSendResult()) { if (recvInfo.getSendResult()) {
IMSendResult result = new IMSendResult(); IMSendResult<Object> result = new IMSendResult<>();
result.setSender(recvInfo.getSender()); result.setSender(recvInfo.getSender());
result.setReceiver(receiver); result.setReceiver(receiver);
result.setCode(sendCode.code()); result.setCode(sendCode.code());
result.setData(recvInfo.getData()); result.setData(recvInfo.getData());
// 推送到结果队列 // 推送到结果队列
String key = StrUtil.join(":",IMRedisKey.IM_RESULT_GROUP_QUEUE,recvInfo.getServiceName()); String key = StrUtil.join(":",IMRedisKey.IM_RESULT_GROUP_QUEUE,recvInfo.getServiceName());
redisTemplate.opsForList().rightPush(key, result); redisMQTemplate.opsForList().rightPush(key, result);
} }
} }
} }

1
im-server/src/main/java/com/bx/imserver/netty/processor/HeartbeatProcessor.java

@ -30,7 +30,6 @@ public class HeartbeatProcessor extends AbstractMessageProcessor<IMHeartbeatInfo
IMSendInfo sendInfo = new IMSendInfo(); IMSendInfo sendInfo = new IMSendInfo();
sendInfo.setCmd(IMCmdType.HEART_BEAT.code()); sendInfo.setCmd(IMCmdType.HEART_BEAT.code());
ctx.channel().writeAndFlush(sendInfo); ctx.channel().writeAndFlush(sendInfo);
;
// 设置属性 // 设置属性
AttributeKey<Long> heartBeatAttr = AttributeKey.valueOf(ChannelAttrKey.HEARTBEAT_TIMES); AttributeKey<Long> heartBeatAttr = AttributeKey.valueOf(ChannelAttrKey.HEARTBEAT_TIMES);
Long heartbeatTimes = ctx.channel().attr(heartBeatAttr).get(); Long heartbeatTimes = ctx.channel().attr(heartBeatAttr).get();

6
im-server/src/main/java/com/bx/imserver/netty/processor/PrivateMessageProcessor.java

@ -8,11 +8,11 @@ import com.bx.imcommon.model.IMRecvInfo;
import com.bx.imcommon.model.IMSendInfo; import com.bx.imcommon.model.IMSendInfo;
import com.bx.imcommon.model.IMSendResult; import com.bx.imcommon.model.IMSendResult;
import com.bx.imcommon.model.IMUserInfo; import com.bx.imcommon.model.IMUserInfo;
import com.bx.imcommon.mq.RedisMQTemplate;
import com.bx.imserver.netty.UserChannelCtxMap; import com.bx.imserver.netty.UserChannelCtxMap;
import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelHandlerContext;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.Objects; import java.util.Objects;
@ -22,7 +22,7 @@ import java.util.Objects;
@RequiredArgsConstructor @RequiredArgsConstructor
public class PrivateMessageProcessor extends AbstractMessageProcessor<IMRecvInfo> { public class PrivateMessageProcessor extends AbstractMessageProcessor<IMRecvInfo> {
private final RedisTemplate<String, Object> redisTemplate; private final RedisMQTemplate redisMQTemplate;
@Override @Override
public void process(IMRecvInfo recvInfo) { public void process(IMRecvInfo recvInfo) {
@ -61,7 +61,7 @@ public class PrivateMessageProcessor extends AbstractMessageProcessor<IMRecvInfo
result.setData(recvInfo.getData()); result.setData(recvInfo.getData());
// 推送到结果队列 // 推送到结果队列
String key = StrUtil.join(":",IMRedisKey.IM_RESULT_PRIVATE_QUEUE,recvInfo.getServiceName()); String key = StrUtil.join(":",IMRedisKey.IM_RESULT_PRIVATE_QUEUE,recvInfo.getServiceName());
redisTemplate.opsForList().rightPush(key, result); redisMQTemplate.opsForList().rightPush(key, result);
} }
} }
} }

6
im-server/src/main/java/com/bx/imserver/netty/processor/SystemMessageProcessor.java

@ -8,11 +8,11 @@ import com.bx.imcommon.model.IMRecvInfo;
import com.bx.imcommon.model.IMSendInfo; import com.bx.imcommon.model.IMSendInfo;
import com.bx.imcommon.model.IMSendResult; import com.bx.imcommon.model.IMSendResult;
import com.bx.imcommon.model.IMUserInfo; import com.bx.imcommon.model.IMUserInfo;
import com.bx.imcommon.mq.RedisMQTemplate;
import com.bx.imserver.netty.UserChannelCtxMap; import com.bx.imserver.netty.UserChannelCtxMap;
import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelHandlerContext;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.Objects; import java.util.Objects;
@ -22,7 +22,7 @@ import java.util.Objects;
@RequiredArgsConstructor @RequiredArgsConstructor
public class SystemMessageProcessor extends AbstractMessageProcessor<IMRecvInfo> { public class SystemMessageProcessor extends AbstractMessageProcessor<IMRecvInfo> {
private final RedisTemplate<String, Object> redisTemplate; private final RedisMQTemplate redisMQTemplate;
@Override @Override
public void process(IMRecvInfo recvInfo) { public void process(IMRecvInfo recvInfo) {
@ -61,7 +61,7 @@ public class SystemMessageProcessor extends AbstractMessageProcessor<IMRecvInfo>
result.setData(recvInfo.getData()); result.setData(recvInfo.getData());
// 推送到结果队列 // 推送到结果队列
String key = StrUtil.join(":",IMRedisKey.IM_RESULT_SYSTEM_QUEUE,recvInfo.getServiceName()); String key = StrUtil.join(":",IMRedisKey.IM_RESULT_SYSTEM_QUEUE,recvInfo.getServiceName());
redisTemplate.opsForList().rightPush(key, result); redisMQTemplate.opsForList().rightPush(key, result);
} }
} }
} }

4
im-server/src/main/java/com/bx/imserver/netty/tcp/TcpSocketServer.java

@ -17,14 +17,14 @@ import org.springframework.stereotype.Component;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
/** /**
* TCP服务器,用于连接非网页的客户端,协议格式 4字节内容的长度+IMSendInfo的JSON序列化 * TCP服务器,用于连接非网页的客户端,协议格式 8字节内容的长度+IMSendInfo的JSON序列化
* *
* @author Blue * @author Blue
* @date 2022-11-20 * @date 2022-11-20
*/ */
@Slf4j @Slf4j
@Component @Component
@ConditionalOnProperty(prefix = "tcpsocket", value = "enable", havingValue = "true", matchIfMissing = true) @ConditionalOnProperty(prefix = "tcpsocket", value = "enable", havingValue = "true", matchIfMissing = false)
public class TcpSocketServer implements IMServer { public class TcpSocketServer implements IMServer {
private volatile boolean ready = false; private volatile boolean ready = false;

2
im-server/src/main/java/com/bx/imserver/netty/ws/WebSocketServer.java

@ -28,7 +28,7 @@ import java.util.concurrent.TimeUnit;
*/ */
@Slf4j @Slf4j
@Component @Component
@ConditionalOnProperty(prefix = "websocket", value = "enable", havingValue = "true", matchIfMissing = true) @ConditionalOnProperty(prefix = "websocket", value = "enable", havingValue = "true", matchIfMissing = false)
public class WebSocketServer implements IMServer { public class WebSocketServer implements IMServer {
@Value("${websocket.port}") @Value("${websocket.port}")

Loading…
Cancel
Save