发布与订阅
定义与模型
订阅命令与发布命令
订阅频道或模式、退订频道或模式、发布消息。
SUBSCRIBE channel [channel …]
订阅给定的一个或多个频道。
PSUBSCRIBE pattern [pattern …]
订阅一个或多个模式, pattern 参数可以包含 glob 风格的匹配符,比如:
- news::* 模式可以匹配 news::bussiness 、 news::it 、 news::sports::football 等频道;
- news::[ie]t 模式可以匹配 news::it 频道或者 news::et 频道;
- news::?t 模式可以匹配 news::it 、 news::et 、 news::at 等频道;
UNSUBSCRIBE [channel [channel …]]
退订指定的频道。如果执行时没有指定任何频道,那么退订已订阅的所有频道。
PUNSUBSCRIBE [pattern [pattern …]]
退订指定的模式。如果执行时没有指定任何模式,那么退订已订阅的所有模式。
PUBLISH channel message
将消息发送至指定的频道,命令返回接收到消息的订阅者数量。
订阅状态命令
查看被订阅的频道、频道的订阅数量以及模式的订阅数量。
PUBSUB CHANNELS [pattern]
列出目前至少有一个订阅者的频道。如果给定了可选的 pattern 参数,那么只列出与模式相匹配的频道。
PUBSUB NUMSUB [channel-1 … channel-N]
返回给定频道的订阅者数量。
PUBSUB NUMPAT
返回服务器目前被订阅的模式数量。
直播间示例
API | 作用 | 实现原理 |
---|---|---|
LiveRoom(client, name) | 设置直播间的客户端和名字。 | 名字会被用作频道名字。 |
LiveRoom.play(song_id) | 播主功能,播放指定歌曲。 | 调用 PUBLISH 命令,向频道发送播放指令。 |
LiveRoom.listen() | 听众功能,收听播主播放的歌曲。 | 调用 SUBSCRIBE 订阅指定频道,并根据频道转发的消息来播放指定的歌曲。 |