websocket

package
v0.2.8 Latest Latest
Warning

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

Go to latest
Published: Oct 28, 2023 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultHandlers = &MessageHandlers{
	PersonalMessage:         func(event *WSEventMessage, data *PersonalMessageEventBody) error { return nil },
	ChannelMessage:          func(event *WSEventMessage, data *ChannelMessageEventBody) error { return nil },
	MessageReaction:         func(event *WSEventMessage, data *MessageReactionEventBody) error { return nil },
	MemberJoin:              func(event *WSEventMessage, data *MemberJoinEventBody) error { return nil },
	MemberLeave:             func(event *WSEventMessage, data *MemberLeaveEventBody) error { return nil },
	MemberInvite:            func(event *WSEventMessage, data *MemberInviteEventBody) error { return nil },
	ChannelVoiceMemberJoin:  func(event *WSEventMessage, data *ChannelVoiceMemberJoinEventBody) error { return nil },
	ChannelVoiceMemberLeave: func(event *WSEventMessage, data *ChannelVoiceMemberLeaveEventBody) error { return nil },
	ChannelArticle:          func(event *WSEventMessage, data *ChannelArticleEventBody) error { return nil },
	ChannelArticleComment:   func(event *WSEventMessage, data *ChannelArticleCommentEventBody) error { return nil },
	GiftSend:                func(event *WSEventMessage, data *GiftSendEventBody) error { return nil },
	PlainTextHandler:        func(event *WSEventMessage, message []byte) error { return nil },
	ErrorHandler:            func(err error) {},
}

DefaultHandlers default handlers to manage all supported message

Functions

func ParseData

func ParseData(message []byte, v interface{}) error

ParseData parse message data

func RegisterHandlers

func RegisterHandlers(handlers ...interface{})

RegisterHandlers Register global level event message handlers

Types

type ChannelArticleCommentEventBody

type ChannelArticleCommentEventBody struct {
	IslandSourceId string         `json:"islandSourceId"` // 来源群ID
	ChannelId      string         `json:"channelId"`      // 来源语音频道ID
	DodoSourceId   string         `json:"dodoSourceId"`   // 来源DoDoID
	Personal       *PersonalModel `json:"personal"`       // 个人信息
	Member         *MemberModel   `json:"member"`         // 成员信息
	ArticleId      string         `json:"articleId"`      // 帖子ID
	CommentId      string         `json:"commentId"`      // 帖子评论ID
	ReplyId        string         `json:"replyId"`        // 帖子评论回复ID,为空时:为评论事件,不为空时:为评论回复事件
	ImageList      []string       `json:"imageList"`      // 图片列表
	Content        string         `json:"content"`        // 文本内容,支持 菱形语法内容的接收
}

ChannelArticleCommentEventBody 帖子评论回复事件

func (*ChannelArticleCommentEventBody) EventType

type ChannelArticleCommentHandler

type ChannelArticleCommentHandler func(event *WSEventMessage, data *ChannelArticleCommentEventBody) error

ChannelArticleCommentHandler 帖子评论回复事件

type ChannelArticleEventBody

type ChannelArticleEventBody struct {
	IslandSourceId string         `json:"islandSourceId"` // 来源群ID
	ChannelId      string         `json:"channelId"`      // 来源语音频道ID
	DodoSourceId   string         `json:"dodoSourceId"`   // 来源DoDoID
	Personal       *PersonalModel `json:"personal"`       // 个人信息
	Member         *MemberModel   `json:"member"`         // 成员信息
	ArticleId      string         `json:"articleId"`      // 帖子ID
	Title          string         `json:"title"`          // 标题
	ImageList      []string       `json:"imageList"`      // 图片列表
	Content        string         `json:"content"`        // 文本内容,支持 菱形语法内容的接收
}

ChannelArticleEventBody 帖子发布事件

func (*ChannelArticleEventBody) EventType

func (e *ChannelArticleEventBody) EventType() EventType

type ChannelArticleHandler

type ChannelArticleHandler func(event *WSEventMessage, data *ChannelArticleEventBody) error

ChannelArticleHandler 帖子发布事件

type ChannelMessageEventBody

type ChannelMessageEventBody struct {
	IslandSourceId string              `json:"islandSourceId"` // 来源群id
	ChannelId      string              `json:"channelId"`      // 来源频道号
	DodoSourceId   string              `json:"dodoSourceId"`   // 来源DoDoID
	Personal       *PersonalModel      `json:"personal"`       // 个人信息
	Member         *MemberModel        `json:"member"`         // 成员信息
	Reference      *ReferenceModel     `json:"reference"`      // 回复信息
	MessageId      string              `json:"messageId"`      // 消息ID
	MessageType    model.MessageType   `json:"messageType"`    // 消息类型,1:文本消息,2:图片消息,3:视频消息,5:文件消息 6:卡片消息
	MessageBody    jsoniter.RawMessage `json:"messageBody"`    // 消息内容(model.IMessageBody)
}

ChannelMessageEventBody 频道消息事件

func (*ChannelMessageEventBody) EventType

func (e *ChannelMessageEventBody) EventType() EventType

type ChannelMessageEventHandler

type ChannelMessageEventHandler func(event *WSEventMessage, data *ChannelMessageEventBody) error

ChannelMessageEventHandler 频道消息事件 handler

type ChannelVoiceMemberJoinEventBody

type ChannelVoiceMemberJoinEventBody struct {
	IslandSourceId string         `json:"islandSourceId"` // 来源群ID
	ChannelId      string         `json:"channelId"`      // 来源语音频道ID
	DodoSourceId   string         `json:"dodoSourceId"`   // 来源DoDoID
	Personal       *PersonalModel `json:"personal"`       // 个人信息
	Member         *MemberModel   `json:"member"`         // 成员信息
}

ChannelVoiceMemberJoinEventBody 成员加入语音频道事件

func (*ChannelVoiceMemberJoinEventBody) EventType

type ChannelVoiceMemberJoinHandler

type ChannelVoiceMemberJoinHandler func(event *WSEventMessage, data *ChannelVoiceMemberJoinEventBody) error

ChannelVoiceMemberJoinHandler 成员加入语音频道事件

type ChannelVoiceMemberLeaveEventBody

type ChannelVoiceMemberLeaveEventBody struct {
	IslandSourceId string         `json:"islandSourceId"` // 来源群ID
	ChannelId      string         `json:"channelId"`      // 来源语音频道ID
	DodoSourceId   string         `json:"dodoSourceId"`   // 来源DoDoID
	Personal       *PersonalModel `json:"personal"`       // 个人信息
	Member         *MemberModel   `json:"member"`         // 成员信息
}

ChannelVoiceMemberLeaveEventBody 成员退出语音频道事件

func (*ChannelVoiceMemberLeaveEventBody) EventType

type ChannelVoiceMemberLeaveHandler

type ChannelVoiceMemberLeaveHandler func(event *WSEventMessage, data *ChannelVoiceMemberLeaveEventBody) error

ChannelVoiceMemberLeaveHandler 成员退出语音频道事件

type Client

type Client interface {
	Connect() error
	Listen() error
	Write(event *WSEventMessage) error
	Reconnect() error
	Close()
}

Client WebSocket client interface

func New

func New(rc restClient.Client, options ...OptionHandler) (Client, error)

New a WebSocket instance

type ErrorHandler

type ErrorHandler func(err error)

ErrorHandler error handler

type EventBody

type EventBody interface {
	EventType() EventType
}

EventBody 事件内容

type EventData

type EventData struct {
	EventId   string              `json:"eventId"`   // 事件ID
	EventType EventType           `json:"eventType"` // 事件类型
	EventBody jsoniter.RawMessage `json:"eventBody"` // 事件内容
	Timestamp uint64              `json:"timestamp"` // 发送时间戳
}

EventData 事件业务数据

type EventType

type EventType string

EventType event type code

const (
	PersonalMessageEvent         EventType = "1001" // 个人消息事件
	ChannelMessageEvent          EventType = "2001" // 频道消息事件
	MessageReactionEvent         EventType = "3001" // 消息反应事件
	MemberJoinEvent              EventType = "4001" // 成员加入事件
	MemberLeaveEvent             EventType = "4002" // 成员退出事件
	MemberInviteEvent            EventType = "4003" // 成员退出事件
	ChannelVoiceMemberJoinEvent  EventType = "5001" // 成员加入语音频道事件
	ChannelVoiceMemberLeaveEvent EventType = "5002" // 成员退出语音频道事件
	ChannelArticleEvent          EventType = "6001" // 帖子发布事件
	ChannelArticleCommentEvent   EventType = "6002" // 帖子评论回复事件
	GiftSendEvent                EventType = "7001" // 赠礼成功事件
)

type GiftSendEventBody

type GiftSendEventBody struct {
	IslandSourceId string `json:"islandSourceId"`
	ChannelId      string `json:"channelId"`
	OrderNo        string `json:"orderNo"`
	TargetType     int    `json:"targetType"`
	TargetId       string `json:"targetId"`
	Gift           struct {
		Id    string `json:"id"`
		Name  string `json:"name"`
		Count int    `json:"count"`
	} `json:"gift"`
	TotalAmount          float64 `json:"totalAmount"`
	IslandRatio          float64 `json:"islandRatio"`
	IslandIncome         float64 `json:"islandIncome"`
	DodoSourceId         string  `json:"dodoSourceId"`
	DodoIslandNickName   string  `json:"dodoIslandNickName"`
	ToDodoSourceId       string  `json:"toDodoSourceId"`
	ToDodoIslandNickName string  `json:"toDodoIslandNickName"`
	ToDodoRatio          float64 `json:"toDodoRatio"`
	ToDodoIncome         float64 `json:"toDodoIncome"`
}

GiftSendEventBody 赠礼成功事件 [https://open.imdodo.com/dev/event/gift.html#%E8%B5%A0%E7%A4%BC%E6%88%90%E5%8A%9F%E4%BA%8B%E4%BB%B6]

func (*GiftSendEventBody) EventType

func (e *GiftSendEventBody) EventType() EventType

type GiftSendHandler

type GiftSendHandler func(event *WSEventMessage, data *GiftSendEventBody) error

GiftSendHandler 赠礼成功事件

type MemberInviteEventBody

type MemberInviteEventBody struct {
	IslandSourceId       string `json:"islandSourceId"`       // 来源群id
	DodoSourceId         string `json:"dodoSourceId"`         // 来源DoDoID
	DodoIslandNickName   string `json:"dodoIslandNickName"`   // 邀请人群昵称
	ToDodoSourceId       string `json:"toDodoSourceId"`       // 被邀请人DoDoID
	ToDodoIslandNickName string `json:"toDodoIslandNickName"` // 被邀请人群昵称
}

MemberInviteEventBody 成员邀请事件

func (*MemberInviteEventBody) EventType

func (e *MemberInviteEventBody) EventType() EventType

type MemberInviteEventHandler

type MemberInviteEventHandler func(event *WSEventMessage, data *MemberInviteEventBody) error

MemberInviteEventHandler 成员邀请事件 handler

type MemberJoinEventBody

type MemberJoinEventBody struct {
	IslandSourceId string `json:"islandSourceId"` // 来源群id
	DodoSourceId   string `json:"dodoSourceId"`   // 来源DoDoID
	ModifyTime     string `json:"modifyTime"`     // 变动时间
}

MemberJoinEventBody 成员加入事件

func (*MemberJoinEventBody) EventType

func (e *MemberJoinEventBody) EventType() EventType

type MemberJoinEventHandler

type MemberJoinEventHandler func(event *WSEventMessage, data *MemberJoinEventBody) error

MemberJoinEventHandler 成员加入事件 handler

type MemberLeaveEventBody

type MemberLeaveEventBody struct {
	IslandSourceId      string         `json:"islandSourceId"`      // 来源群id
	DodoSourceId        string         `json:"dodoSourceId"`        // 来源DoDoID
	Personal            *PersonalModel `json:"personal"`            // 个人信息
	LeaveType           int            `json:"leaveType"`           // 退出类型,1:主动,2:被踢
	OperateDodoSourceId string         `json:"operateDodoSourceId"` // 操作者DoDoID(执行踢出操作的人)
	ModifyTime          string         `json:"modifyTime"`          // 变动时间
}

MemberLeaveEventBody 成员退出事件

func (*MemberLeaveEventBody) EventType

func (e *MemberLeaveEventBody) EventType() EventType

type MemberLeaveEventHandler

type MemberLeaveEventHandler func(event *WSEventMessage, data *MemberLeaveEventBody) error

MemberLeaveEventHandler 成员退出事件 handler

type MemberModel

type MemberModel struct {
	NickName string `json:"nickName"` // 在群昵称
	JoinTime string `json:"joinTime"` // 加群时间
}

MemberModel 成员信息

type MessageHandlers

type MessageHandlers struct {
	PersonalMessage         PersonalMessageEventHandler
	ChannelMessage          ChannelMessageEventHandler
	MessageReaction         MessageReactionEventHandler
	MemberJoin              MemberJoinEventHandler
	MemberLeave             MemberLeaveEventHandler
	MemberInvite            MemberInviteEventHandler
	ChannelVoiceMemberJoin  ChannelVoiceMemberJoinHandler
	ChannelVoiceMemberLeave ChannelVoiceMemberLeaveHandler
	ChannelArticle          ChannelArticleHandler
	ChannelArticleComment   ChannelArticleCommentHandler
	GiftSend                GiftSendHandler
	PlainTextHandler        PlainTextHandler
	ErrorHandler            ErrorHandler
}

MessageHandlers instance message handlers

type MessageReactionEventBody

type MessageReactionEventBody struct {
	IslandSourceId string                `json:"islandSourceId"` // 来源群id
	ChannelId      string                `json:"channelId"`      // 来源频道号
	DodoSourceId   string                `json:"dodoSourceId"`   // 来源DoDoID
	ReactionTarget *model.ReactionTarget `json:"reactionTarget"` // 反应对象
	ReactionEmoji  *model.ReactionEmoji  `json:"reactionEmoji"`  // 反应表情
	ReactionType   int                   `json:"reactionType"`   // 反应类型,0:删除,1:新增
}

MessageReactionEventBody 消息反应事件

func (*MessageReactionEventBody) EventType

func (e *MessageReactionEventBody) EventType() EventType

type MessageReactionEventHandler

type MessageReactionEventHandler func(event *WSEventMessage, data *MessageReactionEventBody) error

MessageReactionEventHandler 消息反应事件 handler

type OptionHandler

type OptionHandler func(*config) error

func WithMessageHandlers

func WithMessageHandlers(handlers *MessageHandlers) OptionHandler

WithMessageHandlers Customize message handlers

func WithMessageQueueSize

func WithMessageQueueSize(size int) OptionHandler

WithMessageQueueSize Customize message channel queue size

type PersonalMessageEventBody

type PersonalMessageEventBody struct {
	IslandSourceId string              `json:"islandSourceId"` // 来源群ID
	DodoSourceId   string              `json:"dodoSourceId"`   // 来源DoDoID
	Personal       *PersonalModel      `json:"personal"`       // 个人信息
	MessageId      string              `json:"messageId"`      // 消息ID
	MessageType    model.MessageType   `json:"messageType"`    // 消息类型,1:文本消息,2:图片消息,3:视频消息
	MessageBody    jsoniter.RawMessage `json:"messageBody"`    // 消息内容(model.IMessageBody)
}

PersonalMessageEventBody 个人消息事件

func (*PersonalMessageEventBody) EventType

func (e *PersonalMessageEventBody) EventType() EventType

type PersonalMessageEventHandler

type PersonalMessageEventHandler func(event *WSEventMessage, data *PersonalMessageEventBody) error

PersonalMessageEventHandler 个人消息事件 handler

type PersonalModel

type PersonalModel struct {
	NickName  string `json:"nickName"`  // 个人昵称
	AvatarUrl string `json:"avatarUrl"` // 个人头像
	Sex       int    `json:"sex"`       // 个人性别,-1:保密,0:女,1:男
}

PersonalModel 个人信息

type PlainTextHandler

type PlainTextHandler func(event *WSEventMessage, message []byte) error

PlainTextHandler plain text message handler

type ReferenceModel

type ReferenceModel struct {
	MessageId    string `json:"messageId"`    // 被回复消息ID
	DodoSourceId string `json:"dodoSourceId"` // 被回复者DoDoID
	NickName     string `json:"nickName"`     // 被回复者在群昵称
}

ReferenceModel 回复信息

type TypeCode

type TypeCode int

TypeCode data type code

const (
	BizType       TypeCode = 0 // 业务数据
	HeartbeatType TypeCode = 1 // 心跳
)

type WSBeatData

type WSBeatData struct {
	Type TypeCode `json:"type"`
}

WSBeatData 心跳类型数据

type WSEventMessage

type WSEventMessage struct {
	Type TypeCode            `json:"type"`           // 数据类型
	Data jsoniter.RawMessage `json:"data,omitempty"` // 数据内容
}

WSEventMessage 事件主体内容

Jump to

Keyboard shortcuts

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