pubsub

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Sep 6, 2023 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// ChannelChatMessage 推送通道聊天消息
	ChannelChatMessage = "chat_message"

	// ChannelNotify 提送通道推送消息
	ChannelNotify = "notify"
)
View Source
const (
	// PayloadTypeChatMessage 聊天消息
	PayloadTypeChatMessage = "chat_message"

	// PayloadTypeFriendInvite 好友邀请
	PayloadTypeFriendInvite = "friend_invite"
)

Variables

This section is empty.

Functions

func DefaultPubsuber

func DefaultPubsuber() *pubsuber

func Init

func Init(cfg config.Config) error

func NewSubscriber

func NewSubscriber() *subscriber

func PublishChatMessage

func PublishChatMessage(ctx context.Context, data *ChatMessage) error

PublishChatMessage 发布聊天消息到其他服务器上

func PublishNotifyMessage

func PublishNotifyMessage(ctx context.Context, typ string, data any) error

PublishNotifyMessage 发布聊天消息到其他服务器上

func PublishWithPayload

func PublishWithPayload(ctx context.Context, channel, typ string, data any) error

PublishWithPayload 发布推送数据

Types

type ChatMessage

type ChatMessage struct {
	// ActionID 行为ID
	ActionID string `json:"action_id"`

	// ReceiverID 接收人; 可以是用户ID,也可以是房间号
	ReceiverID int64 `json:"receiver_id"`

	// SessionType 会话类型; 1:私聊, 2:群聊
	SessionType int `json:"session_type"`

	// Type 消息类型: 1-纯文本,2-图片,3-语音,4-视频, 5-位置
	Type int `json:"type"`

	// 发送人ID
	SenderID int64 `json:"sender_id"`

	// MessageID 消息ID
	MessageID int64 `json:"message_id"`

	// CreatedAt 创建
	CreatedAt int64 `json:"created_at"`

	// Body 消息体;
	Body ChatMessageBody `json:"body"`

	// PublishTargets 群成员ID列表
	PublishTargets []int64 `json:"publish_targets,omitempty"`
}

ChatMessage 订阅传输用的聊天消息结构

type ChatMessageBody

type ChatMessageBody struct {
	// 文本信息。适用消息类型: 1
	Text string `bson:"text,omitempty" json:"text,omitempty"`

	// 来源地址。通用字段,适用消息类型: 2,3,4
	Src string `bson:"src,omitempty" json:"src,omitempty"`

	// 文件格式。适用消息类型: 2,3,4
	Format string `bson:"format,omitempty" json:"format,omitempty"`

	// 文件大小。适用消息类型: 2,3,4
	Size string `bson:"size,omitempty" json:"size,omitempty"`

	// 位置信息-经度。 适用消息类型: 5
	Longitude string `bson:"longitude,omitempty" json:"longitude,omitempty"`

	// 位置信息-纬度。 适用消息类型: 5
	Latitude string `bson:"latitude,omitempty" json:"latitude,omitempty"`

	// 位置信息-地图缩放级别。 适用消息类型: 5
	Scale float64 `bson:"scale,omitempty" json:"scale,omitempty"`

	// 位置信息标签。适用消息类型: 5
	LocationLabel string `bson:"location_label,omitempty" json:"location_label,omitempty"`
}

ChatMessageBody 消息主体

type FriendInvite

type FriendInvite struct {
	// ID 邀请ID
	ID int64 `json:"id"`

	// UserID 用户ID
	UserID int64 `json:"user_id"`

	// TargetID 目标ID
	TargetID int64 `json:"target_id"`

	// Status 状态
	Status int `json:"type"`

	// Note 备注
	Note string `json:"note"`

	// Reply 回复
	Reply string `json:"reply"`

	// CreatedAt 创建时间
	CreatedAt time.Time `json:"created_at"`
}

FriendInvite 订阅服务传输使用的好友请求结果

type Payload

type Payload struct {
	// Channel 通道
	Channel string `json:"channel,omitempty"`

	// Type 类型
	Type string `json:"type"`

	// Data 具体数据,这里为什么不使用any,因为设置成any最后还需要映射成原来的struct,比较麻烦
	Data string `json:"data"`
}

Payload 推送订阅的有效谁

func (*Payload) MarshalBinary

func (p *Payload) MarshalBinary() (data []byte, err error)

MarshalBinary 实现 encoding.BinaryMarshaler 接口

func (*Payload) UnmarshalBinary

func (p *Payload) UnmarshalBinary(data []byte) error

UnmarshalBinary 实现 encoding.UnmarshalBinary 接口

func (*Payload) UnmarshalData

func (p *Payload) UnmarshalData(dest any) error

UnmarshalData 解码data里面的数据

type SubscribeHandlerFunc

type SubscribeHandlerFunc func(context.Context, *Payload)

SubscribeHandlerFunc 订阅处理方法

Jump to

Keyboard shortcuts

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