pubsubmanager

package module
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 4, 2021 License: MIT Imports: 3 Imported by: 0

README

pubsubmanager

这个项目的设计的用途是给sse和websocket维护推送数据.

本项目只是github.com/kataras/go-events的扩展,解决go-events的一部分问题

  1. 只能注册回调函数不能注册事件的问题.因此造成发送消息必须在有注册回调函数后.这里引入字典来维护已经声明过的事件,只有声明过的事件(频道)才可以注册回调函数.而发送消息时如果频道未注册会自己注册频道.

  2. 无法知道发送端是否结束发送的问题.此处在注册事件(频道)时它的value是一个信号channel,专门用于监听发送端是否结束发送.

  3. 将注册的回调函数获取的结果放入channel,只是注册回调函数很多场景下难以使用,这边定义了RegistListener(channelid string, size int) (<-chan interface{}, <-chan struct{}, CloseListenerFunc, error)方法用于将回调函数中获取到的消息传出来让其他结构可以消费.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var PubSub = NewPubSubManager()

Functions

This section is empty.

Types

type CloseListenerFunc

type CloseListenerFunc func()

type PubSubManager

type PubSubManager struct {
	// contains filtered or unexported fields
}

PubSubManager 广播器

func NewPubSubManager

func NewPubSubManager() *PubSubManager

NewPubSubManager 创建广播器

func (*PubSubManager) AddChannel

func (psm *PubSubManager) AddChannel(channelid string)

AddChannel 将频道注册到系统中允许监听

func (*PubSubManager) ChannelInUse

func (psm *PubSubManager) ChannelInUse(channelid string) bool

ChannelInUse 检测channeldid是否在被使用

func (*PubSubManager) Channels

func (psm *PubSubManager) Channels() []string

Channels 查看现在被注册的频道有哪些

func (*PubSubManager) CloseChannel

func (psm *PubSubManager) CloseChannel(channelid string)

CloseChannel 关闭频道操作.会将频道id先去除不再允许注册监听器,然后将频道id下的所有监听器去除

func (*PubSubManager) CloseNotify

func (psm *PubSubManager) CloseNotify(channelid string) (ch <-chan struct{}, ok bool)

CloseNotify 关闭指定频道的信号提醒 @Param channelid string 频道id @Returns <-chan struct{} 关闭频道所有监听器的信号channel @Returns bool 当前频道是否可用

func (*PubSubManager) Publish

func (psm *PubSubManager) Publish(msg interface{}, channels ...string)

Publish 指定频道广播消息 @Param msg interface{} 广播的消息 @Param channels ...string 广播的频道

func (*PubSubManager) PublishWithDefault

func (psm *PubSubManager) PublishWithDefault(msg interface{}, channels ...string)

PublishWithDefault 指定频道广播消息,消息一并广播到default这个channel上 @Param msg interface{} 广播的消息 @Param channels ...string 广播的频道

func (*PubSubManager) RegistListener

func (psm *PubSubManager) RegistListener(channelid string, size int) (<-chan interface{}, <-chan struct{}, CloseListenerFunc, error)

RegistListener 注册频道的监听器 @Param channelid string 频道id @Param size int 构造的消息channel的缓冲区大小,<=0时使用无缓冲channel @Returns <-chan interface{} 消息channel @Returns <-chan struct{} 关闭监听器的信号channel @Returns CloseListenerFunc 关闭当前注册监听器的函数 @Returns error 当频道未被注册可以使用时会报错

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL