network

package
v0.0.0-...-3153823 Latest Latest
Warning

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

Go to latest
Published: Nov 30, 2020 License: MIT Imports: 4 Imported by: 0

Documentation

Overview

Package network 网络模块

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

type Client interface {
	Session

	// Connect 连接服务
	Connect(host string, port int) error

	// Logger 获取日志实例
	Logger() logger.Logger
}

Client 客户端

type ConnFunc

type ConnFunc func(session Session)

ConnFunc ..

type Crypto

type Crypto interface {
	// Encrypt 加密
	Encrypt(in []byte) ([]byte, error)

	// Decrypt 解密
	Decrypt(in []byte) ([]byte, error)
}

Crypto 加密与解密接口

type Datapack

type Datapack interface {
	// HeaderLen 头部长度
	HeaderLen() int

	// Pack 封包 header
	Pack(message Message, crypto Crypto) ([]byte, error)

	// Unpack 解包 header
	Unpack(buffer *circle.Circle, crypto Crypto) ([]Message, error)

	// IsCrypto 是否进行加密与解密
	IsCrypto() bool
}

Datapack 通讯数据封包与解包接口 分为 header 和 body 两部分

type Helper

type Helper interface {
	// Logger 获取日志
	Logger() logger.Logger

	// Datapack 获取封包与解包器
	Datapack() Datapack

	// RecvBufferSize 接收消息 buffer 大小
	RecvBufferSize() int

	// RecvDeadLine SetReadDeadline
	RecvDeadLine() time.Duration

	// RecvQueueSize 接收到的消息队列大小,接收到的消息由 Session 放到 Peer 的队列中,异步处理
	RecvQueueSize() int

	// SendBufferSize 发送的消息队列大小,消息优先发送到 Session 的消息队列,然后写入到套接字中
	SendBufferSize() int

	// SendDeadLine SendDeadline
	SendDeadLine() time.Duration

	// SendQueueSize 发送消息队列的大小
	SendQueueSize() int

	// Dispatch 分发消息
	Dispatch(message Message) error
}

Helper ..

type Message

type Message interface {
	// SessionID sessionID
	SessionID() SessionID

	// SetSessionID 设置 sessionID
	SetSessionID(sessionID SessionID)

	// ID 消息 ID
	ID() MessageID

	// Flag 标记
	Flag() uint16

	// SN 自增编号
	SN() uint16

	// Payload 负载
	Payload() []byte

	// String 打印消息
	String() string
}

Message 消息包

type MessageHander

type MessageHander func(message Message) (Message, error)

MessageHander 处理客户端消息

type MessageID

type MessageID = uint16

MessageID 消息 ID

type Peer

type Peer interface {
	// Start 开启服务
	Start()

	// Close 关闭服务,释放资源
	Close() error

	// Logger 获取日志实例
	Logger() logger.Logger
}

Peer 服务器接口,比如 tcp 服务器,udp 服务器,websocket 服务器

type SendCallbackFunc

type SendCallbackFunc func(session Session)

SendCallbackFunc 发送消息的回调函数

type ServerFunc

type ServerFunc func()

ServerFunc ..

type Session

type Session interface {
	// Run 让当前连接开始收发消息,一般用于连接成功之后
	Run()

	// Close 停止接收客户端消息,也不再接收服务端消息。当已接收的服务端消息发送完毕后,断开连接
	Close()

	// RegisterOnConnected 客户端连接到来时的响应
	RegisterOnConnected(f ConnFunc)

	// RegisterOnClose 客户端连接关闭时的响应
	RegisterOnClose(f ConnFunc)

	// Send 发送消息给客户端
	Send(message Message) error

	// SendCallback 发送消息个客户端,发送之后进行回调
	SendCallback(message Message, callback SendCallbackFunc) error

	// ID 获取 sessionID,每一条连接都分配有一个唯一的 id
	ID() SessionID

	// RemoteAddr 客户端地址信息
	RemoteAddr() net.Addr

	// Conn 获取原始的连接
	Conn() net.Conn

	// SetCrypto 设置加密与解密方式
	SetCrypto(crypto Crypto)
}

Session 与客户端的一条连接,也称为会话

type SessionID

type SessionID = uint64

SessionID 定义 Session id 类型

type SessionManager

type SessionManager interface {
	// Add 添加 Session
	Add(session Session)

	// Del 移除 Session
	Del(sessionID SessionID)

	// Get(sessionID SessionID) (Session, error)
	Get(sessionID SessionID) (Session, error)

	// Len 获取当前 Session 数量
	Len() int

	// Close 当前所有连接停止接收客户端消息,不再接收服务端消息,当已接收的服务端消息发送完毕后,断开连接
	// timeout 超时时间,如果超时仍未发送完已接收的服务端消息,也强行关闭连接
	Close()

	// Send 发送消息给客户端
	Send(sessionID SessionID, message Message) error

	// SendCallback  发送消息个客户端,发送之后进行回调
	SendCallback(sessionID SessionID, message Message, callback SendCallbackFunc) error

	// SendAll 给所有客户端发送消息
	SendAll(message Message)
}

SessionManager session 管理器

Directories

Path Synopsis
Package client 用于连接 peer
Package client 用于连接 peer
tcp
Package tcp TCP 客户端
Package tcp TCP 客户端
Package crypto 客户端与服务端收发消息时的加密与解密
Package crypto 客户端与服务端收发消息时的加密与解密
rc4
Package rc4 封装 crypto/rc4
Package rc4 封装 crypto/rc4
Package datapack 通讯数据封包与解包
Package datapack 通讯数据封包与解包
fixedlen
Package fixedlen : header + payload header: '负载长度(U16)' + '标记(U16)' + '自增编号(U16)' + '消息编号(U16)' payload: 负载,即消息内容,使用 codec 进行编码与解码 对于标记见 flag.go
Package fixedlen : header + payload header: '负载长度(U16)' + '标记(U16)' + '自增编号(U16)' + '消息编号(U16)' payload: 负载,即消息内容,使用 codec 进行编码与解码 对于标记见 flag.go
Package peer 通讯协议,当前支持 tcp 和 websocket
Package peer 通讯协议,当前支持 tcp 和 websocket
tcp
Package tcp TCP 服务器
Package tcp TCP 服务器
Package session 表示与客户端的一条连接,也称为会话
Package session 表示与客户端的一条连接,也称为会话
tcp

Jump to

Keyboard shortcuts

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