【Go项目】25. 在 gin 中引入 WebSocket 和 Hub_哔哩哔哩_bilibili
gorilla/websocket: Package gorilla/websocket is a fast, well-tested and widely used WebSocket implementation for Go. (github.com)
1.订阅发布机制
引用上面链接的内容
发布订阅的基本工作原理
在分布式通信领域中,消息系统一般有两种典型的模式。一种是点对点模式(P2P,Point to Point),另一种是发布订阅模式(Pub/Sub,Publish/Subscribe)。接下来,我们就一起看看这两种模式,以帮助你深入理解发布订阅模式的原理。
首先,我们一起看一下什么是点对点模式。
生产者将消息发送到消息中心,然后消费者从消息中心取出对应的消息进行消费。消息被消费后,消息中心不再存储该消息,因此其他消费者无法再消费该消息。也就是说,点对点模式虽然支持多个消费者,但一个消息只能被一个消费者消费,不允许重复消费。
这种模式就好比,限定了每篇论文只能被一个用户消费,比如现在有一篇分布式相关的论文,这篇论文推送给学生 A 之后,论文网站就必须将其删除或下架,也就是说其他用户无法再获取或阅读该论文了。(当然实际情况并不是这样的,这里只是为了方便你理解,我做了相应的假设。)
接下来,我们看一下发布订阅模式。
生产者可以发送消息到消息中心,而消息中心通常以主题(Topic)进行划分,每条消息都会有相应的主题,消息会被存储到自己所属的主题中,订阅该主题的所有消费者均可获得该消息进行消费。
我的理解是,点对点模式就是生产者生产的消息有一个固定的消费者,其他人都拿不到,是1-1。
订阅发布更像是分组,生产者生产某一类型的数据,对应一个组的每个成员都能拿到这则消息,是1-n