link

package
v0.0.5 Latest Latest
Warning

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

Go to latest
Published: Jan 19, 2023 License: GPL-3.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrInvalidGID         = errors.New("invalid gate id")
	ErrInvalidNID         = errors.New("invalid node id")
	ErrInvalidMessage     = errors.New("invalid message")
	ErrInvalidSessionKind = errors.New("invalid session kind")
	ErrNotFoundUserSource = errors.New("not found user source")
	ErrReceiveTargetEmpty = errors.New("the receive target is empty")
	ErrInvalidArgument    = errors.New("invalid argument")
)

Functions

This section is empty.

Types

type BroadcastArgs

type BroadcastArgs struct {
	Kind    session.Kind // 会话类型,session.Conn 或 session.User
	Message *Message     // 消息
}

type DeliverArgs

type DeliverArgs struct {
	NID     string      // 接收节点。存在接收节点时,消息会直接投递给接收节点;不存在接收节点时,系统定位用户所在节点,然后投递。
	CID     int64       // 连接ID
	UID     int64       // 用户ID
	Message interface{} // 消息
}

type DisconnectArgs

type DisconnectArgs struct {
	GID     string       // 网关ID,会话类型为用户时可忽略此参数
	Kind    session.Kind // 会话类型,session.Conn 或 session.User
	Target  int64        // 会话目标,CID 或 UID
	IsForce bool         // 是否强制断开
}

type GetIPArgs

type GetIPArgs struct {
	GID    string       // 网关ID,会话类型为用户时可忽略此参数
	Kind   session.Kind // 会话类型,session.Conn 或 session.User
	Target int64        // 会话目标,CID 或 UID
}
type Link struct {
	// contains filtered or unexported fields
}
func NewLink(opts *Options) *Link

func (*Link) BindGate

func (l *Link) BindGate(ctx context.Context, gid string, cid, uid int64) error

BindGate 绑定网关

func (*Link) BindNode

func (l *Link) BindNode(ctx context.Context, uid int64, nid string) error

BindNode 绑定节点 单个用户只能被绑定到某一台节点服务器上,多次绑定会直接覆盖上次绑定 绑定操作会通过发布订阅方式同步到网关服务器和其他相关节点服务器上 nid 为需要绑定的节点ID

func (*Link) Broadcast

func (l *Link) Broadcast(ctx context.Context, args *BroadcastArgs) (int64, error)

Broadcast 推送广播消息

func (*Link) Deliver

func (l *Link) Deliver(ctx context.Context, args *DeliverArgs) error

Deliver 投递消息给节点处理

func (*Link) Disconnect

func (l *Link) Disconnect(ctx context.Context, args *DisconnectArgs) error

Disconnect 断开连接

func (*Link) FetchServiceList

func (l *Link) FetchServiceList(ctx context.Context, kind cluster.Kind, states ...cluster.State) ([]*registry.ServiceInstance, error)

FetchServiceList 拉取服务列表

func (*Link) GetIP

func (l *Link) GetIP(ctx context.Context, args *GetIPArgs) (string, error)

GetIP 获取客户端IP

func (*Link) LocateGate

func (l *Link) LocateGate(ctx context.Context, uid int64) (string, error)

LocateGate 定位用户所在网关

func (*Link) LocateNode

func (l *Link) LocateNode(ctx context.Context, uid int64) (string, error)

LocateNode 定位用户所在节点

func (*Link) Multicast

func (l *Link) Multicast(ctx context.Context, args *MulticastArgs) (int64, error)

Multicast 推送组播消息

func (*Link) Push

func (l *Link) Push(ctx context.Context, args *PushArgs) error

Push 推送消息

func (*Link) Trigger

func (l *Link) Trigger(ctx context.Context, event cluster.Event, uid int64) error

Trigger 触发事件

func (*Link) UnbindGate

func (l *Link) UnbindGate(ctx context.Context, uid int64) error

UnbindGate 解绑网关

func (*Link) UnbindNode

func (l *Link) UnbindNode(ctx context.Context, uid int64, nid string) error

UnbindNode 解绑节点 解绑时会对解绑节点ID进行校验,不匹配则解绑失败 解绑操作会通过发布订阅方式同步到网关服务器和其他相关节点服务器上 nid 为需要解绑的节点ID

func (*Link) WatchServiceInstance

func (l *Link) WatchServiceInstance(ctx context.Context, kinds ...cluster.Kind)

WatchServiceInstance 监听服务实例

func (*Link) WatchUserLocate

func (l *Link) WatchUserLocate(ctx context.Context, kinds ...cluster.Kind)

WatchUserLocate 监听用户定位

type Message

type Message struct {
	Seq   int32       // 序列号
	Route int32       // 路由ID
	Data  interface{} // 消息数据,接收json、proto、[]byte
}

type MulticastArgs

type MulticastArgs struct {
	GID     string       // 网关ID,会话类型为用户时可忽略此参数
	Kind    session.Kind // 会话类型,session.Conn 或 session.User
	Targets []int64      // 会话目标,CID 或 UID
	Message *Message     // 消息
}

type Options

type Options struct {
	GID         string                // 网关ID
	NID         string                // 节点ID
	Codec       encoding.Codec        // 编解码器
	Locator     locate.Locator        // 定位器
	Registry    registry.Registry     // 注册器
	Encryptor   crypto.Encryptor      // 加密器
	Transporter transport.Transporter // 传输器
}

type PushArgs

type PushArgs struct {
	GID     string       // 网关ID,会话类型为用户时可忽略此参数
	Kind    session.Kind // 会话类型,session.Conn 或 session.User
	Target  int64        // 会话目标,CID 或 UID
	Message *Message     // 消息
}

Jump to

Keyboard shortcuts

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