diff --git a/README.md b/README.md index 4ac5a63..2b3e9d6 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ - redis记录了每个用户的websocket连接的是哪个im-server,当用户发送消息时,im-platform将根据所连接的im-server的id,决定将消息推向哪个queue -#### 本地快速部署 +#### 本地启动 1.安装运行环境 - 安装node:v18.19.0 - 安装jdk:17 diff --git a/im-platform/src/main/java/com/bx/implatform/config/RedissonConfig.java b/im-platform/src/main/java/com/bx/implatform/config/RedissonConfig.java deleted file mode 100644 index f3203a0..0000000 --- a/im-platform/src/main/java/com/bx/implatform/config/RedissonConfig.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.bx.implatform.config; - -import cn.hutool.core.util.StrUtil; -import org.redisson.Redisson; -import org.redisson.api.RedissonClient; -import org.redisson.client.codec.StringCodec; -import org.redisson.config.Config; -import org.redisson.config.SingleServerConfig; -import org.springframework.boot.autoconfigure.data.redis.RedisProperties; -import org.springframework.context.annotation.Bean; - -/** - * @author: Blue - * @date: 2024-06-09 - * @version: 1.0 - */ - -//@Configuration -//@ConditionalOnClass(Config.class) -//@EnableConfigurationProperties(RedisProperties.class) -public class RedissonConfig { - - @Bean - RedissonClient redissonClient(RedisProperties redisProperties) { - Config config = new Config(); - config.setCodec(new StringCodec()); - String address = "redis://" + redisProperties.getHost()+":"+redisProperties.getPort(); - SingleServerConfig serverConfig = config.useSingleServer() - .setAddress(address) - .setDatabase(redisProperties.getDatabase()); - if(StrUtil.isNotEmpty(redisProperties.getPassword())) { - serverConfig.setPassword(redisProperties.getPassword()); - } - - return Redisson.create(config); - } - - -} diff --git a/im-server/src/main/java/com/bx/imserver/config/RedisConfig.java b/im-server/src/main/java/com/bx/imserver/config/RedisConfig.java new file mode 100644 index 0000000..fd9d26c --- /dev/null +++ b/im-server/src/main/java/com/bx/imserver/config/RedisConfig.java @@ -0,0 +1,35 @@ +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 redisTemplate(RedisConnectionFactory redisConnectionFactory) { + RedisTemplate 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); + } + + +} diff --git a/im-server/src/main/java/com/bx/imserver/netty/IMChannelHandler.java b/im-server/src/main/java/com/bx/imserver/netty/IMChannelHandler.java index dd9e30e..a932093 100644 --- a/im-server/src/main/java/com/bx/imserver/netty/IMChannelHandler.java +++ b/im-server/src/main/java/com/bx/imserver/netty/IMChannelHandler.java @@ -71,7 +71,7 @@ public class IMChannelHandler extends SimpleChannelInboundHandler { // 移除channel UserChannelCtxMap.removeChannelCtx(userId, terminal); // 用户下线 - RedisTemplate redisTemplate = SpringContextHolder.getBean("redisTemplate"); + RedisTemplate redisTemplate = SpringContextHolder.getBean(RedisTemplate.class); String key = String.join(":", IMRedisKey.IM_USER_SERVER_ID, userId.toString(), terminal.toString()); redisTemplate.delete(key); log.info("断开连接,userId:{},终端类型:{},{}", userId, terminal, ctx.channel().id().asLongText());