model

package
v0.0.0-...-6f4ec31 Latest Latest
Warning

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

Go to latest
Published: Sep 3, 2019 License: Apache-2.0 Imports: 23 Imported by: 0

Documentation

Index

Constants

View Source
const CLIENT_TIMEOUT = (60 * 6)
View Source
const F_VERSION = 1 << 16 //1.0
View Source
const HEADER_SIZE = 32
View Source
const MAGIC = 0x494d494d
View Source
const MESSAGE_QUEUE_LIMIT = 1000

待发送的消息数量限制

View Source
const MSG_ACK_IN = 255

deprecated

View Source
const MSG_GROUP_ACK_IN = 253

deprecated

View Source
const MSG_GROUP_IM_LIST = 252

超级群消息队列

View Source
const MSG_OFFLINE = 254

deprecated 兼容性

View Source
const MSG_OFFLINE_V2 = 250

个人消息队列 代替MSG_OFFLINE deprecated 兼容性

View Source
const MSG_OFFLINE_V3 = 249

个人消息队列 代替MSG_OFFLINE_V2

View Source
const MSG_OFFLINE_V4 = 248

内部文件存储使用 个人消息队列 代替MSG_OFFLINE_V3

View Source
const MSG_PENDING_GROUP_MESSAGE = 251

im实例使用

View Source
const MSG_STORAGE_SYNC_BEGIN = 220

主从同步消息

View Source
const MSG_STORAGE_SYNC_MESSAGE = 221
View Source
const MSG_STORAGE_SYNC_MESSAGE_BATCH = 222

Variables

View Source
var Group_message_delivers []*GroupMessageDeliver
View Source
var Group_route_channels []*Channel

super group route server

View Source
var Group_rpc_clients []*gorpc.DispatcherClient

super group storage server

View Source
var Group_sync_c chan *SyncGroupHistory
View Source
var Route_channels []*Channel

route server

View Source
var Rpc_clients []*gorpc.DispatcherClient

storage server, peer, group, customer message

View Source
var Sync_c chan *SyncHistory

Functions

func CountDAU

func CountDAU(appid int64, uid int64)

func CountUser

func CountUser(appid int64, uid int64)

func DispatchAppMessage

func DispatchAppMessage(amsg *CommonModel.AppMessage)

func DispatchGroupMessage

func DispatchGroupMessage(amsg *CommonModel.AppMessage)

func DispatchRoomMessage

func DispatchRoomMessage(amsg *CommonModel.AppMessage)

func GetDeviceID

func GetDeviceID(device_id string, platform_id int) (int64, error)

func GetGroupStorageRPCClient

func GetGroupStorageRPCClient(group_id int64) *gorpc.DispatcherClient

超级群消息

func GetGroupSyncKey

func GetGroupSyncKey(appid int64, uid int64, group_id int64) int64

func GetStorageRPCClient

func GetStorageRPCClient(uid int64) *gorpc.DispatcherClient

个人消息/普通群消息/客服消息

func GetSyncKey

func GetSyncKey(appid int64, uid int64) int64

func GetUserForbidden

func GetUserForbidden(appid int64, uid int64) (int, error)

func HandleForbidden

func HandleForbidden(data string)

func InitConnection

func InitConnection()

func ListenRedis

func ListenRedis()

func LoadUserAccessToken

func LoadUserAccessToken(token string) (int64, int64, int, bool, error)

func NewRoute

func NewRoute(appid int64) CommonModel.RouteBase

func NewServerSummary

func NewServerSummary()

func PublishGroupMessage

func PublishGroupMessage(appid int64, group_id int64, msg *CommonModel.Message)

func PublishMessage

func PublishMessage(appid int64, uid int64, m *CommonModel.Message)

func PushGroupMessage

func PushGroupMessage(appid int64, group_id int64, m *CommonModel.Message)

超级群,离线消息推送

func PushMessage

func PushMessage(appid int64, uid int64, m *CommonModel.Message)

离线消息推送

func ReadBinaryMesage

func ReadBinaryMesage(b []byte) *CommonModel.Message

func ReadEngineIOMessage

func ReadEngineIOMessage(conn engineio.Conn) *CommonModel.Message

func ReadWebsocketMessage

func ReadWebsocketMessage(conn *websocket.Conn) *CommonModel.Message

func SaveGroupMessage

func SaveGroupMessage(appid int64, gid int64, device_id int64, msg *CommonModel.Message) (int64, error)

func SaveGroupSyncKey

func SaveGroupSyncKey(appid int64, uid int64, group_id int64, sync_key int64)

func SaveMessage

func SaveMessage(appid int64, uid int64, device_id int64, m *CommonModel.Message) (int64, error)

func SaveSyncKey

func SaveSyncKey(appid int64, uid int64, sync_key int64)

func SendAppGroupMessage

func SendAppGroupMessage(appid int64, group_id int64, msg *CommonModel.Message)

func SendAppMessage

func SendAppMessage(appid int64, uid int64, msg *CommonModel.Message)

func SendEngineIOBinaryMessage

func SendEngineIOBinaryMessage(conn engineio.Conn, msg *CommonModel.Message)

func SendWebsocketBinaryMessage

func SendWebsocketBinaryMessage(conn *websocket.Conn, msg *CommonModel.Message) error

func SetUserUnreadCount

func SetUserUnreadCount(appid int64, uid int64, count int32)

func SubscribeRedis

func SubscribeRedis() bool

func SyncKeyService

func SyncKeyService()

Types

type Channel

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

func GetChannel

func GetChannel(uid int64) *Channel

func GetGroupChannel

func GetGroupChannel(group_id int64) *Channel

func GetRoomChannel

func GetRoomChannel(room_id int64) *Channel

func NewChannel

func NewChannel(addr string, f func(*model.AppMessage),
	f2 func(*model.AppMessage), f3 func(*model.AppMessage)) *Channel

func (*Channel) AddSubscribe

func (channel *Channel) AddSubscribe(appid, uid int64, online bool) (int, int)

返回添加前的计数

func (*Channel) AddSubscribeRoom

func (channel *Channel) AddSubscribeRoom(appid, room_id int64) int

返回添加前的计数

func (*Channel) GetAllRoomSubscriber

func (channel *Channel) GetAllRoomSubscriber() []*model.AppRoomID

func (*Channel) GetAllSubscriber

func (channel *Channel) GetAllSubscriber() map[int64]*Subscriber

func (*Channel) Publish

func (channel *Channel) Publish(amsg *model.AppMessage)

func (*Channel) PublishGroup

func (channel *Channel) PublishGroup(amsg *model.AppMessage)

func (*Channel) PublishRoom

func (channel *Channel) PublishRoom(amsg *model.AppMessage)

func (*Channel) ReSubscribe

func (channel *Channel) ReSubscribe(conn *net.TCPConn, seq int) int

func (*Channel) ReSubscribeRoom

func (channel *Channel) ReSubscribeRoom(conn *net.TCPConn, seq int) int

func (*Channel) RemoveSubscribe

func (channel *Channel) RemoveSubscribe(appid, uid int64, online bool) (int, int)

返回删除前的计数

func (*Channel) RemoveSubscribeRoom

func (channel *Channel) RemoveSubscribeRoom(appid, room_id int64) int

返回删除前的计数

func (*Channel) Run

func (channel *Channel) Run()

func (*Channel) RunOnce

func (channel *Channel) RunOnce(conn *net.TCPConn)

func (*Channel) Start

func (channel *Channel) Start()

func (*Channel) Subscribe

func (channel *Channel) Subscribe(appid int64, uid int64, online bool)

online表示用户不再接受推送通知(apns, gcm)

func (*Channel) SubscribeRoom

func (channel *Channel) SubscribeRoom(appid int64, room_id int64)

func (*Channel) Unsubscribe

func (channel *Channel) Unsubscribe(appid int64, uid int64, online bool)

func (*Channel) UnsubscribeRoom

func (channel *Channel) UnsubscribeRoom(appid int64, room_id int64)

type Client

type Client struct {
	Connection //必须放在结构体首部
	*PeerClient
	*GroupClient
	*RoomClient
	*CustomerClient
	// contains filtered or unexported fields
}

func NewClient

func NewClient(conn interface{}) *Client

func (*Client) AddClient

func (client *Client) AddClient()

func (*Client) AuthToken

func (client *Client) AuthToken(token string) (int64, int64, int, bool, error)

func (*Client) HandleACK

func (client *Client) HandleACK(ack *Commonmodel.MessageACK)

func (*Client) HandleAuthToken

func (client *Client) HandleAuthToken(login *Commonmodel.AuthenticationToken, version int)

func (*Client) HandleClientClosed

func (client *Client) HandleClientClosed()

func (*Client) HandleMessage

func (client *Client) HandleMessage(msg *Commonmodel.Message)

func (*Client) HandlePing

func (client *Client) HandlePing()

func (*Client) Read

func (client *Client) Read()

func (*Client) RemoveClient

func (client *Client) RemoveClient()

func (*Client) Run

func (client *Client) Run()

func (*Client) SendMessages

func (client *Client) SendMessages(seq int) int

发送等待队列中的消息

func (*Client) Write

func (client *Client) Write()

type ClientSet

type ClientSet map[*Client]struct{}

func NewClientSet

func NewClientSet() ClientSet

func (ClientSet) Add

func (set ClientSet) Add(c *Client)

func (ClientSet) Clone

func (set ClientSet) Clone() ClientSet

func (ClientSet) Count

func (set ClientSet) Count() int

func (ClientSet) IsMember

func (set ClientSet) IsMember(c *Client) bool

func (ClientSet) Remove

func (set ClientSet) Remove(c *Client)

type Connection

type Connection struct {
	Wt chan *CommonModel.Message
	// contains filtered or unexported fields
}

func (*Connection) EnqueueMessage

func (client *Connection) EnqueueMessage(msg *CommonModel.Message) bool

func (*Connection) EnqueueMessages

func (client *Connection) EnqueueMessages(msgs []*CommonModel.Message) bool

func (*Connection) EnqueueNonBlockMessage

func (client *Connection) EnqueueNonBlockMessage(msg *CommonModel.Message) bool

func (*Connection) SendGroupMessage

func (client *Connection) SendGroupMessage(group_id int64, msg *CommonModel.Message)

发送超级群消息

func (*Connection) SendMessage

func (client *Connection) SendMessage(uid int64, msg *CommonModel.Message) bool

type CustomerClient

type CustomerClient struct {
	*Connection
}

func (*CustomerClient) HandleCustomerMessage

func (client *CustomerClient) HandleCustomerMessage(msg *CommonModel.Message)

顾客->客服

func (*CustomerClient) HandleCustomerSupportMessage

func (client *CustomerClient) HandleCustomerSupportMessage(msg *CommonModel.Message)

客服->顾客

func (*CustomerClient) HandleMessage

func (client *CustomerClient) HandleMessage(msg *CommonModel.Message)

type EMessage

type EMessage struct {
	Msgid     int64
	Device_id int64
	Msg       *model.Message
}

func (*EMessage) FromData

func (emsg *EMessage) FromData(buff []byte) bool

func (*EMessage) ToData

func (emsg *EMessage) ToData() []byte

type GroupClient

type GroupClient struct {
	*Connection
}

func (*GroupClient) HandleGroupIMMessage

func (client *GroupClient) HandleGroupIMMessage(message *CommonModel.Message)

func (*GroupClient) HandleGroupMessage

func (client *GroupClient) HandleGroupMessage(im *CommonModel.IMMessage,
	group *CommonModel.Group)

func (*GroupClient) HandleGroupSync

func (client *GroupClient) HandleGroupSync(group_sync_key *CommonModel.GroupSyncKey)

func (*GroupClient) HandleGroupSyncKey

func (client *GroupClient) HandleGroupSyncKey(group_sync_key *CommonModel.GroupSyncKey)

func (*GroupClient) HandleMessage

func (client *GroupClient) HandleMessage(msg *CommonModel.Message)

func (*GroupClient) HandleSuperGroupMessage

func (client *GroupClient) HandleSuperGroupMessage(msg *CommonModel.IMMessage)

type GroupHistoryMessage

type GroupHistoryMessage PeerHistoryMessage

type GroupMessage

type GroupMessage struct {
	AppID    int64
	GroupID  int64
	DeviceID int64
	Cmd      int32
	Raw      []byte
}

type GroupMessageDeliver

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

后台发送普通群消息 普通群消息首先保存到临时文件中,之后按照保存到文件中的顺序依次派发

func GetGroupMessageDeliver

func GetGroupMessageDeliver(group_id int64) *GroupMessageDeliver

func NewGroupMessageDeliver

func NewGroupMessageDeliver(root string) *GroupMessageDeliver

func (*GroupMessageDeliver) LoadMessage

func (storage *GroupMessageDeliver) LoadMessage(msg_id int64) *model.Message

func (*GroupMessageDeliver) ReadHeader

func (storage *GroupMessageDeliver) ReadHeader(file *os.File) (magic int, version int)

func (*GroupMessageDeliver) ReadMessage

func (storage *GroupMessageDeliver) ReadMessage(file *os.File) *model.Message

func (*GroupMessageDeliver) SaveMessage

func (storage *GroupMessageDeliver) SaveMessage(msg *model.Message) int64

func (*GroupMessageDeliver) Start

func (storage *GroupMessageDeliver) Start()

func (*GroupMessageDeliver) WriteHeader

func (storage *GroupMessageDeliver) WriteHeader(file *os.File)

type GroupOfflineMessage

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

func (*GroupOfflineMessage) FromData

func (off *GroupOfflineMessage) FromData(buff []byte) bool

func (*GroupOfflineMessage) ToData

func (off *GroupOfflineMessage) ToData() []byte

type HistoryMessage

type HistoryMessage struct {
	MsgID    int64
	DeviceID int64 //消息发送者所在的设备ID
	Cmd      int32
	Raw      []byte
}

type HistoryRequest

type HistoryRequest struct {
	AppID int64
	Uid   int64
	Limit int32
}

type IOfflineMessage

type IOfflineMessage interface {
	// contains filtered or unexported methods
}

type MessageBatch

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

func (*MessageBatch) FromData

func (batch *MessageBatch) FromData(buff []byte) bool

func (*MessageBatch) ToData

func (batch *MessageBatch) ToData() []byte

type OfflineMessage

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

type OfflineMessage1

type OfflineMessage1 struct {
	OfflineMessage
}

func (*OfflineMessage1) FromData

func (off *OfflineMessage1) FromData(buff []byte) bool

func (*OfflineMessage1) ToData

func (off *OfflineMessage1) ToData() []byte

type OfflineMessage2

type OfflineMessage2 struct {
	OfflineMessage
}

func (*OfflineMessage2) FromData

func (off *OfflineMessage2) FromData(buff []byte) bool

func (*OfflineMessage2) ToData

func (off *OfflineMessage2) ToData() []byte

type OfflineMessage3

type OfflineMessage3 struct {
	OfflineMessage
}

func (*OfflineMessage3) FromData

func (off *OfflineMessage3) FromData(buff []byte) bool

func (*OfflineMessage3) ToData

func (off *OfflineMessage3) ToData() []byte

type OfflineMessage4

type OfflineMessage4 struct {
	OfflineMessage
}

func (*OfflineMessage4) FromData

func (off *OfflineMessage4) FromData(buff []byte) bool

func (*OfflineMessage4) ToData

func (off *OfflineMessage4) ToData() []byte

type PeerClient

type PeerClient struct {
	*Connection
}

func (*PeerClient) HandleIMMessage

func (client *PeerClient) HandleIMMessage(message *CommonModel.Message)

func (*PeerClient) HandleMessage

func (client *PeerClient) HandleMessage(msg *CommonModel.Message)

func (*PeerClient) HandleRTMessage

func (client *PeerClient) HandleRTMessage(msg *CommonModel.Message)

func (*PeerClient) HandleSync

func (client *PeerClient) HandleSync(sync_key *CommonModel.SyncKey)

func (*PeerClient) HandleSyncKey

func (client *PeerClient) HandleSyncKey(sync_key *CommonModel.SyncKey)

func (*PeerClient) HandleUnreadCount

func (client *PeerClient) HandleUnreadCount(u *CommonModel.MessageUnreadCount)

func (*PeerClient) Login

func (client *PeerClient) Login()

func (*PeerClient) Logout

func (client *PeerClient) Logout()

type PeerHistoryMessage

type PeerHistoryMessage struct {
	Messages  []*HistoryMessage
	LastMsgID int64
	HasMore   bool
}

type PeerMessage

type PeerMessage struct {
	AppID    int64
	Uid      int64
	DeviceID int64
	Cmd      int32
	Raw      []byte
}

type PendingGroupMessage

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

待发送的群组消息临时存储结构

func (*PendingGroupMessage) FromData

func (gm *PendingGroupMessage) FromData(buff []byte) bool

func (*PendingGroupMessage) ToData

func (gm *PendingGroupMessage) ToData() []byte

type RoomClient

type RoomClient struct {
	*Connection
	// contains filtered or unexported fields
}

func (*RoomClient) Client

func (client *RoomClient) Client() *Client

func (*RoomClient) HandleEnterRoom

func (client *RoomClient) HandleEnterRoom(room *model.Room)

func (*RoomClient) HandleLeaveRoom

func (client *RoomClient) HandleLeaveRoom(room *model.Room)

func (*RoomClient) HandleMessage

func (client *RoomClient) HandleMessage(msg *model.Message)

func (*RoomClient) HandleRoomIM

func (client *RoomClient) HandleRoomIM(room_im *model.RoomMessage, seq int)

func (*RoomClient) Logout

func (client *RoomClient) Logout()

type Route

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

func (*Route) AddClient

func (route *Route) AddClient(client *Client)

func (*Route) AddRoomClient

func (route *Route) AddRoomClient(room_id int64, client *Client)

func (*Route) AddRoomID

func (route *Route) AddRoomID(room_id int64)

func (*Route) AddUserID

func (route *Route) AddUserID(uid int64, online bool)

func (*Route) ContainRoomID

func (route *Route) ContainRoomID(room_id int64) bool

func (*Route) ContainUserID

func (route *Route) ContainUserID(room_id int64) bool

func (*Route) FindClientSet

func (route *Route) FindClientSet(uid int64) ClientSet

func (*Route) FindRoomClientSet

func (route *Route) FindRoomClientSet(room_id int64) ClientSet

todo optimise client set clone

func (*Route) GetAppID

func (route *Route) GetAppID() int64

func (*Route) GetUserIDs

func (route *Route) GetUserIDs() CommonModel.IntSet

func (*Route) IsOnline

func (route *Route) IsOnline(uid int64) bool

func (*Route) IsUserOnline

func (route *Route) IsUserOnline(uid int64) bool

func (*Route) RemoveClient

func (route *Route) RemoveClient(client *Client) bool

func (*Route) RemoveRoomClient

func (route *Route) RemoveRoomClient(room_id int64, client *Client) bool

func (*Route) RemoveRoomID

func (route *Route) RemoveRoomID(room_id int64)

func (*Route) RemoveUserID

func (route *Route) RemoveUserID(uid int64)

type ServerSummary

type ServerSummary struct {
	Nconnections      int64
	Nclients          int64
	In_message_count  int64
	Out_message_count int64
}
var Server_summary *ServerSummary

统计需要

type Subscriber

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

func NewSubscriber

func NewSubscriber() *Subscriber

type SyncCursor

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

func (*SyncCursor) FromData

func (cursor *SyncCursor) FromData(buff []byte) bool

func (*SyncCursor) ToData

func (cursor *SyncCursor) ToData() []byte

type SyncGroupHistory

type SyncGroupHistory struct {
	AppID     int64
	Uid       int64
	DeviceID  int64
	GroupID   int64
	LastMsgID int64
	Timestamp int32
}

type SyncHistory

type SyncHistory struct {
	AppID     int64
	Uid       int64
	DeviceID  int64
	LastMsgID int64
}

Jump to

Keyboard shortcuts

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