WebSocketSession 发布订阅模式的学习

问题

  • 存储sessionId和webSocketSession
    • 需要注意的是,webSocketSession没有提供无参构造,不能进行序列化,也就不能通过redis存储
    • 在分布式系统中,要想别的办法实现webSocketSession共享

原理学习

发布者:做广播的动作
订阅者:订阅者需要在启动java的时候就加载进去,必须是这个时刻。否则的话发布消息的时候还没订阅,那广播的动作已经在做,同时订阅和广播就会出现时间差。
springboot结合redis的发布订阅关键代码

// 发布
redisTemplate.convertAndSend("my_topic_name", "message_content");

// 配置订阅
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
container.addMessageListener(xxxMessageListenerAdapter, "my_topic_name");

hollis
redis.convertAndSend()这个方法的作用为,向某个通道(参数1)推送一条消息(第二个参数)。

注意:生产者和消费者的通道名要相同。

gas

发布订阅是一种消息模式,消息的发送者(称为发布者)不会将消息直接发送给特定的接收者(称为订阅者)。而是将发布的消息分为不同的类别,无需了解哪些订阅者(如果有的话)可能存在。同样的,订阅者可以表达对一个或多个类别的兴趣,只接收感兴趣的消息,无需了解哪些发布者(如果有的话)存在。
在这里插入图片描述

mlwsmqq

斗者2013
在这里插入图片描述


解决

先看看别人的,运行成功java引导者
缺陷:
1要是id对上了即第一次发送就成功了就不用去广播了,加个if判断1
2还有就是自己这里的usermap是map<string,set>,而别人的那个是只有一个map<string,string>
这里的websocket对象这个是直接继承的。就相当于别人的那个websocketServer(),别人只是重新封装了一下重载
3我自己的业务要求是2个实例
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

耳东哇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值