登录
首页 >  Golang >  Go问答

可以向Redis中的所有频道广播消息吗?

来源:stackoverflow

时间:2024-03-09 23:54:24 427浏览 收藏

今天golang学习网给大家带来了《可以向Redis中的所有频道广播消息吗?》,其中涉及到的知识点包括等等,无论你是小白还是老手,都适合看一看哦~有好的建议也欢迎大家在评论留言,若是看完有所收获,也希望大家能多多点赞支持呀!一起加油学习~

问题内容

我正在尝试将消息广播到 redis 中的频道,但每个用户都有自己的频道及其 user_id。

我认为可以使用的方式是获取所有活动频道,然后一一发布。因为据我所知,如果不同的渠道,redis 无法发布。

但问题是,在 lib go-redis 中,当用户订阅并使用命令 PUBSUB CAHNNELS 检查 redis 时,没有通道结果。我在文档中读到订阅功能不会立即激活频道。那么我怎样才能获得订阅频道呢?

有什么办法可以解决这个问题吗? 我正在使用 golang-redis https://godoc.org/github.com/go-redis/redis


解决方案


将每个连接订阅到每个用户频道和一个广播频道。要发送给所有用户,请发布到广播频道。对于 go-redis 客户端,订阅者代码将如下所示:

sub := client.subscribe(userchannel, broadcastchannel)
defer sub.close()
for {
   m, err := sub.receivemessage()
   ... do something with m
}

其中 userchannel 和 broadcastchannel 是 redis 通道的名称。使用这样的代码进行广播:

cmd := client.Publish(broadcastChannel, message)
if cmd.Err() != nil {
    // handle error
}

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>