logic

package
v0.0.0-...-4711404 Latest Latest
Warning

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

Go to latest
Published: Aug 22, 2022 License: MIT Imports: 19 Imported by: 0

Documentation

Index

Constants

View Source
const (
	MsgTypeNormal    = iota // 普通 用户消息
	MsgTypeWelcome          // 当前用户欢迎消息
	MsgTypeUserEnter        // 用户进入
	MsgTypeUserLeave        // 用户退出
	MsgTypeError            // 错误消息
)

Variables

View Source
var Broadcaster = &broadcaster{
	users: make(map[string]*User),

	enteringChannel: make(chan *User),
	leavingChannel:  make(chan *User),
	messageChannel:  make(chan *Message, global.MessageQueueLen),

	checkUserChannel:      make(chan string),
	checkUserCanInChannel: make(chan bool),

	requestUsersChannel: make(chan struct{}),
	usersChannel:        make(chan []*User),
}

Broadcaster 实例化一个广播实例,方便外部调用

View Source
var OfflineProcessor = newOfflineProcessor()
View Source
var System = &User{}

System 系统用户,代表是系统主动发送的消息

Functions

func FilterSensitive

func FilterSensitive(content string) string

Types

type Message

type Message struct {
	// 哪个用户发送的消息
	User    *User     `json:"user"`
	Type    int       `json:"type"`
	Content string    `json:"content"`
	MsgTime time.Time `json:"msg_time"`

	ClientSendTime time.Time `json:"client_send_time"`

	// 消息 @ 了谁
	Ats []string `json:"ats"`
}

Message 给用户发送的消息

func NewErrorMessage

func NewErrorMessage(content string) *Message

NewErrorMessage 报错信息

func NewMessage

func NewMessage(user *User, content, clientTime string) *Message

func NewUserEnterMessage

func NewUserEnterMessage(user *User) *Message

NewUserEnterMessage 加入聊天室时的用语

func NewUserLeaveMessage

func NewUserLeaveMessage(user *User) *Message

func NewWelcomeMessage

func NewWelcomeMessage(user *User) *Message

NewWelcomeMessage 发送欢迎用语

type User

type User struct {
	UID            int           `json:"uid"`
	NickName       string        `json:"nickname"`
	EnterAt        time.Time     `json:"enter_at"`
	Addr           string        `json:"addr"`
	MessageChannel chan *Message `json:"-"`
	Token          string        `json:"token"`
	// contains filtered or unexported fields
}

User 一个 User 代表一个进入了聊天室的用户

func NewUser

func NewUser(conn *websocket.Conn, token, nickname, addr string) *User

func (*User) CloseMessageChannel

func (u *User) CloseMessageChannel()

CloseMessageChannel 避免 goroutine 泄露

func (*User) ReceiveMessage

func (u *User) ReceiveMessage(ctx context.Context) error

ReceiveMessage 接收用户消息

func (*User) SendMessage

func (u *User) SendMessage(ctx context.Context)

SendMessage 给用户发送消息的 goroutine

Jump to

Keyboard shortcuts

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