Documentation ¶
Index ¶
- Constants
- Variables
- func CountDAU(appid int64, uid int64)
- func CountUser(appid int64, uid int64)
- func DispatchAppMessage(amsg *CommonModel.AppMessage)
- func DispatchGroupMessage(amsg *CommonModel.AppMessage)
- func DispatchRoomMessage(amsg *CommonModel.AppMessage)
- func GetDeviceID(device_id string, platform_id int) (int64, error)
- func GetGroupStorageRPCClient(group_id int64) *gorpc.DispatcherClient
- func GetGroupSyncKey(appid int64, uid int64, group_id int64) int64
- func GetStorageRPCClient(uid int64) *gorpc.DispatcherClient
- func GetSyncKey(appid int64, uid int64) int64
- func GetUserForbidden(appid int64, uid int64) (int, error)
- func HandleForbidden(data string)
- func InitConnection()
- func ListenRedis()
- func LoadUserAccessToken(token string) (int64, int64, int, bool, error)
- func NewRoute(appid int64) CommonModel.RouteBase
- func NewServerSummary()
- func PublishGroupMessage(appid int64, group_id int64, msg *CommonModel.Message)
- func PublishMessage(appid int64, uid int64, m *CommonModel.Message)
- func PushGroupMessage(appid int64, group_id int64, m *CommonModel.Message)
- func PushMessage(appid int64, uid int64, m *CommonModel.Message)
- func ReadBinaryMesage(b []byte) *CommonModel.Message
- func ReadEngineIOMessage(conn engineio.Conn) *CommonModel.Message
- func ReadWebsocketMessage(conn *websocket.Conn) *CommonModel.Message
- func SaveGroupMessage(appid int64, gid int64, device_id int64, msg *CommonModel.Message) (int64, error)
- func SaveGroupSyncKey(appid int64, uid int64, group_id int64, sync_key int64)
- func SaveMessage(appid int64, uid int64, device_id int64, m *CommonModel.Message) (int64, error)
- func SaveSyncKey(appid int64, uid int64, sync_key int64)
- func SendAppGroupMessage(appid int64, group_id int64, msg *CommonModel.Message)
- func SendAppMessage(appid int64, uid int64, msg *CommonModel.Message)
- func SendEngineIOBinaryMessage(conn engineio.Conn, msg *CommonModel.Message)
- func SendWebsocketBinaryMessage(conn *websocket.Conn, msg *CommonModel.Message) error
- func SetUserUnreadCount(appid int64, uid int64, count int32)
- func SubscribeRedis() bool
- func SyncKeyService()
- type Channel
- func (channel *Channel) AddSubscribe(appid, uid int64, online bool) (int, int)
- func (channel *Channel) AddSubscribeRoom(appid, room_id int64) int
- func (channel *Channel) GetAllRoomSubscriber() []*model.AppRoomID
- func (channel *Channel) GetAllSubscriber() map[int64]*Subscriber
- func (channel *Channel) Publish(amsg *model.AppMessage)
- func (channel *Channel) PublishGroup(amsg *model.AppMessage)
- func (channel *Channel) PublishRoom(amsg *model.AppMessage)
- func (channel *Channel) ReSubscribe(conn *net.TCPConn, seq int) int
- func (channel *Channel) ReSubscribeRoom(conn *net.TCPConn, seq int) int
- func (channel *Channel) RemoveSubscribe(appid, uid int64, online bool) (int, int)
- func (channel *Channel) RemoveSubscribeRoom(appid, room_id int64) int
- func (channel *Channel) Run()
- func (channel *Channel) RunOnce(conn *net.TCPConn)
- func (channel *Channel) Start()
- func (channel *Channel) Subscribe(appid int64, uid int64, online bool)
- func (channel *Channel) SubscribeRoom(appid int64, room_id int64)
- func (channel *Channel) Unsubscribe(appid int64, uid int64, online bool)
- func (channel *Channel) UnsubscribeRoom(appid int64, room_id int64)
- type Client
- func (client *Client) AddClient()
- func (client *Client) AuthToken(token string) (int64, int64, int, bool, error)
- func (client *Client) HandleACK(ack *Commonmodel.MessageACK)
- func (client *Client) HandleAuthToken(login *Commonmodel.AuthenticationToken, version int)
- func (client *Client) HandleClientClosed()
- func (client *Client) HandleMessage(msg *Commonmodel.Message)
- func (client *Client) HandlePing()
- func (client *Client) Read()
- func (client *Client) RemoveClient()
- func (client *Client) Run()
- func (client *Client) SendMessages(seq int) int
- func (client *Client) Write()
- type ClientSet
- type Connection
- func (client *Connection) EnqueueMessage(msg *CommonModel.Message) bool
- func (client *Connection) EnqueueMessages(msgs []*CommonModel.Message) bool
- func (client *Connection) EnqueueNonBlockMessage(msg *CommonModel.Message) bool
- func (client *Connection) SendGroupMessage(group_id int64, msg *CommonModel.Message)
- func (client *Connection) SendMessage(uid int64, msg *CommonModel.Message) bool
- type CustomerClient
- type EMessage
- type GroupClient
- func (client *GroupClient) HandleGroupIMMessage(message *CommonModel.Message)
- func (client *GroupClient) HandleGroupMessage(im *CommonModel.IMMessage, group *CommonModel.Group)
- func (client *GroupClient) HandleGroupSync(group_sync_key *CommonModel.GroupSyncKey)
- func (client *GroupClient) HandleGroupSyncKey(group_sync_key *CommonModel.GroupSyncKey)
- func (client *GroupClient) HandleMessage(msg *CommonModel.Message)
- func (client *GroupClient) HandleSuperGroupMessage(msg *CommonModel.IMMessage)
- type GroupHistoryMessage
- type GroupMessage
- type GroupMessageDeliver
- func (storage *GroupMessageDeliver) LoadMessage(msg_id int64) *model.Message
- func (storage *GroupMessageDeliver) ReadHeader(file *os.File) (magic int, version int)
- func (storage *GroupMessageDeliver) ReadMessage(file *os.File) *model.Message
- func (storage *GroupMessageDeliver) SaveMessage(msg *model.Message) int64
- func (storage *GroupMessageDeliver) Start()
- func (storage *GroupMessageDeliver) WriteHeader(file *os.File)
- type GroupOfflineMessage
- type HistoryMessage
- type HistoryRequest
- type IOfflineMessage
- type MessageBatch
- type OfflineMessage
- type OfflineMessage1
- type OfflineMessage2
- type OfflineMessage3
- type OfflineMessage4
- type PeerClient
- func (client *PeerClient) HandleIMMessage(message *CommonModel.Message)
- func (client *PeerClient) HandleMessage(msg *CommonModel.Message)
- func (client *PeerClient) HandleRTMessage(msg *CommonModel.Message)
- func (client *PeerClient) HandleSync(sync_key *CommonModel.SyncKey)
- func (client *PeerClient) HandleSyncKey(sync_key *CommonModel.SyncKey)
- func (client *PeerClient) HandleUnreadCount(u *CommonModel.MessageUnreadCount)
- func (client *PeerClient) Login()
- func (client *PeerClient) Logout()
- type PeerHistoryMessage
- type PeerMessage
- type PendingGroupMessage
- type RoomClient
- func (client *RoomClient) Client() *Client
- func (client *RoomClient) HandleEnterRoom(room *model.Room)
- func (client *RoomClient) HandleLeaveRoom(room *model.Room)
- func (client *RoomClient) HandleMessage(msg *model.Message)
- func (client *RoomClient) HandleRoomIM(room_im *model.RoomMessage, seq int)
- func (client *RoomClient) Logout()
- type Route
- func (route *Route) AddClient(client *Client)
- func (route *Route) AddRoomClient(room_id int64, client *Client)
- func (route *Route) AddRoomID(room_id int64)
- func (route *Route) AddUserID(uid int64, online bool)
- func (route *Route) ContainRoomID(room_id int64) bool
- func (route *Route) ContainUserID(room_id int64) bool
- func (route *Route) FindClientSet(uid int64) ClientSet
- func (route *Route) FindRoomClientSet(room_id int64) ClientSet
- func (route *Route) GetAppID() int64
- func (route *Route) GetUserIDs() CommonModel.IntSet
- func (route *Route) IsOnline(uid int64) bool
- func (route *Route) IsUserOnline(uid int64) bool
- func (route *Route) RemoveClient(client *Client) bool
- func (route *Route) RemoveRoomClient(room_id int64, client *Client) bool
- func (route *Route) RemoveRoomID(room_id int64)
- func (route *Route) RemoveUserID(uid int64)
- type ServerSummary
- type Subscriber
- type SyncCursor
- type SyncGroupHistory
- type SyncHistory
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 App_route *CommonModel.AppRoute
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 DispatchAppMessage ¶
func DispatchAppMessage(amsg *CommonModel.AppMessage)
func DispatchGroupMessage ¶
func DispatchGroupMessage(amsg *CommonModel.AppMessage)
func DispatchRoomMessage ¶
func DispatchRoomMessage(amsg *CommonModel.AppMessage)
func GetGroupStorageRPCClient ¶
func GetGroupStorageRPCClient(group_id int64) *gorpc.DispatcherClient
超级群消息
func GetStorageRPCClient ¶
func GetStorageRPCClient(uid int64) *gorpc.DispatcherClient
个人消息/普通群消息/客服消息
func GetSyncKey ¶
func HandleForbidden ¶
func HandleForbidden(data string)
func InitConnection ¶
func InitConnection()
func ListenRedis ¶
func ListenRedis()
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 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 SaveGroupSyncKey ¶
func SaveMessage ¶
func SaveSyncKey ¶
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 SubscribeRedis ¶
func SubscribeRedis() bool
func SyncKeyService ¶
func SyncKeyService()
Types ¶
type Channel ¶
type Channel struct {
// contains filtered or unexported fields
}
func GetChannel ¶
func GetGroupChannel ¶
func GetRoomChannel ¶
func NewChannel ¶
func NewChannel(addr string, f func(*model.AppMessage), f2 func(*model.AppMessage), f3 func(*model.AppMessage)) *Channel
func (*Channel) AddSubscribe ¶
返回添加前的计数
func (*Channel) AddSubscribeRoom ¶
返回添加前的计数
func (*Channel) GetAllRoomSubscriber ¶
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) ReSubscribeRoom ¶
func (*Channel) RemoveSubscribe ¶
返回删除前的计数
func (*Channel) RemoveSubscribeRoom ¶
返回删除前的计数
func (*Channel) SubscribeRoom ¶
func (*Channel) Unsubscribe ¶
func (*Channel) UnsubscribeRoom ¶
type Client ¶
type Client struct { Connection //必须放在结构体首部 *PeerClient *GroupClient *RoomClient *CustomerClient // contains filtered or unexported fields }
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) RemoveClient ¶
func (client *Client) RemoveClient()
type ClientSet ¶
type ClientSet map[*Client]struct{}
func NewClientSet ¶
func NewClientSet() ClientSet
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 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 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 HistoryRequest ¶
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 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) AddRoomClient ¶
func (*Route) ContainRoomID ¶
func (*Route) ContainUserID ¶
func (*Route) FindClientSet ¶
func (*Route) FindRoomClientSet ¶
todo optimise client set clone
func (*Route) GetUserIDs ¶
func (route *Route) GetUserIDs() CommonModel.IntSet
func (*Route) IsUserOnline ¶
func (*Route) RemoveClient ¶
func (*Route) RemoveRoomClient ¶
func (*Route) RemoveRoomID ¶
func (*Route) RemoveUserID ¶
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 ¶
Source Files ¶
Click to show internal directories.
Click to hide internal directories.