Java使用redis+sse实现带频道的网络聊天室

本文介绍了如何使用Spring Boot重构Flask项目中的聊天室功能,通过Redis和Server-Sent Events (SSE) 实现基于频道的网络聊天。文章详细讲解了配置类、接收器类、业务类和控制器类的编写,利用Redis的消息订阅机制完成消息的发布与接收。
摘要由CSDN通过智能技术生成

  因为某些原因,需要将flask搭建的项目用spring boot重构一遍,其中有一个聊天室的功能,在flask下我采用了flask-sse这个第三方库来实现,该模块采用基于redis的消息订阅系统实现,当然类spring boot下自然没有这个方便的库了,但是spring boot对redis的消息机制的支持还是不错的,所以在看了下相关文档后我觉得可以自己实现一个,接下来就是思路和具体步骤了

  参考文档: http://spring.io/guides/gs/messaging-redis/

废话不多说,上代码

配置类

@Configuration
public class RedisConf {
    @Bean
    RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {
        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);
        return container;
    }

    @Bean
    StringRedisTemplate template(RedisConnectionFactory connectionFactory) {
        return new StringRedisTemplate(connectionFactory);
    }


    @Bean
    MessageListenerAdapter listenerAdapter(Receiver receiver) {
        return new MessageListenerAdapter(receiver, "receiveMessage");
    }

    @Bean
    Receiver receiver() {
        return new Receiver();
    }


    @Bean("channelMap")
    Map<String, List<SseEmitter>> channelMap(){
        return new ConcurrentHashMap<String, List<SseEmitter>>();
    }
}

该类注入了一些必要的实例,顺便说一句,默认情况下,spring的注入是单例模式。

接下来是receiver类,该类接收到redis发送的消息,并且发布给相应的频道中的所有人,该

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值