pubsubmanager

package module
v0.0.2 Latest Latest
Warning

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

Go to latest
Published: Feb 14, 2022 License: MIT Imports: 4 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 关闭指定频道的信号提醒 @params channelid string 频道id @returns <-chan struct{} 关闭频道所有监听器的信号channel @returns bool 当前频道是否可用

func (*PubSubManager) Publish

func (psm *PubSubManager) Publish(msg interface{})

Publish 全频道广播消息 @params msg interface{} 广播的消息

func (*PubSubManager) PublishWithoutDefault added in v0.0.2

func (psm *PubSubManager) PublishWithoutDefault(msg interface{})

PublishWithoutDefault 除了default这个channel外全频道广播 @params msg interface{} 广播的消息

func (*PubSubManager) RegistListener

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

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

func (*PubSubManager) Send added in v0.0.2

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

Send 指定频道发送消息 @params msg interface{} 发送的消息 @params channels ...string 发送去的频道

func (*PubSubManager) SendWithDefault added in v0.0.2

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

SendWithDefault 指定频道发送消息,消息一并发送到default这个channel上 @params msg interface{} 发送的消息 @params channels ...string 发送去的频道

Jump to

Keyboard shortcuts

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