connect

package
v0.0.0-...-d492d45 Latest Latest
Warning

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

Go to latest
Published: Jun 19, 2019 License: Apache-2.0 Imports: 24 Imported by: 0

Documentation

Index

Constants

View Source
const (
	TypeLen       = 2                 // 消息类型字节数组长度
	LenLen        = 2                 // 消息长度字节数组长度
	HeadLen       = 4                 // 消息头部字节数组长度(消息类型字节数组长度+消息长度字节数组长度)
	ContentMaxLen = 4092              // 消息体最大长度
	BufLen        = ContentMaxLen + 4 // 缓冲buffer字节数组长度
)
View Source
const (
	ReadDeadline  = 10 * time.Minute
	WriteDeadline = 10 * time.Second
)
View Source
const (
	CodeSignIn         = 1 // 设备登录
	CodeSignInACK      = 2 // 设备登录回执
	CodeSyncTrigger    = 3 // 消息同步触发
	CodeHeartbeat      = 4 // 心跳
	CodeHeartbeatACK   = 5 // 心跳回执
	CodeMessageSend    = 6 // 消息发送
	CodeMessageSendACK = 7 // 消息发送回执
	CodeMessage        = 8 // 消息投递
	CodeMessageACK     = 9 // 消息投递回执
)

消息协议

Variables

View Source
var (
	ErrNotEnough = errors.New("not enough")
)
View Source
var ErrOutOfSize = errors.New("package content out of size") // package的content字节数组过大

Functions

func Context

func Context() *imctx.Context

func GetPanicInfo

func GetPanicInfo() string

PrintStaStack 打印Panic堆栈信息

func NsqConsumer

func NsqConsumer(topic, channel string, handle func(message *nsq.Message) error, concurrency int)

NsqConsumer 消费消息

func RecoverPanic

func RecoverPanic()

RecoverPanic 恢复panic

func StartNsqConsumer

func StartNsqConsumer()

StartNsqConsume 启动nsq消费者,以后所有的消费者在这里注册

Types

type Codec

type Codec struct {
	Conn     net.Conn
	ReadBuf  buffer // 读缓冲
	WriteBuf []byte // 写缓冲
}

func NewCodec

func NewCodec(conn net.Conn) *Codec

newCodec 创建一个解码器

func (*Codec) Decode

func (c *Codec) Decode() (*Package, bool)

Decode 解码数据

func (*Codec) Encode

func (c *Codec) Encode(pack Package, duration time.Duration) error

Eecode 编码数据

func (*Codec) Read

func (c *Codec) Read() (int, error)

Read 从conn里面读取数据,当conn发生阻塞,这个方法也会阻塞

type Conf

type Conf struct {
	Address      string // 端口
	MaxConnCount int    // 最大连接数
	AcceptCount  int    // 接收建立连接的goroutine数量
}

Conf server配置文件

type ConnContext

type ConnContext struct {
	Codec    *Codec // 编解码器
	IsSignIn bool   // 是否
	DeviceId int64  // 设备id
	UserId   int64  // 用户id
}

ConnContext 连接上下文

func NewConnContext

func NewConnContext(conn *net.TCPConn) *ConnContext

func (*ConnContext) DoConn

func (c *ConnContext) DoConn()

DoConn 处理TCP连接

func (*ConnContext) HandleConnect

func (c *ConnContext) HandleConnect()

HandleConnect 建立连接

func (*ConnContext) HandlePackage

func (c *ConnContext) HandlePackage(pack *Package)

HandlePackage 处理消息包

func (*ConnContext) HandlePackageHeartbeat

func (c *ConnContext) HandlePackageHeartbeat()

HandlePackageHeadbeat 处理心跳包

func (*ConnContext) HandlePackageMessageACK

func (c *ConnContext) HandlePackageMessageACK(pack *Package)

HandlePackageMessageACK 处理消息回执消息包

func (*ConnContext) HandlePackageMessageSend

func (c *ConnContext) HandlePackageMessageSend(pack *Package)

HandlePackageMessageSend 处理消息发送包

func (*ConnContext) HandlePackageSignIn

func (c *ConnContext) HandlePackageSignIn(pack *Package)

func (*ConnContext) HandlePackageSyncTrigger

func (c *ConnContext) HandlePackageSyncTrigger(pack *Package)

HandlePackageSyncTrigger 处理同步触发消息包

func (*ConnContext) HandleReadErr

func (c *ConnContext) HandleReadErr(err error)

HandleReadErr 读取conn错误

func (*ConnContext) Realease

func (c *ConnContext) Realease()

Realease 释放TCP连接

type Package

type Package struct {
	Code    int    // 消息类型
	Content []byte // 消息体
}

Package 消息包

type TCPServer

type TCPServer struct {
	Address      string // 端口
	MaxConnCount int    // 最大连接数
	AcceptCount  int    // 接收建立连接的goroutine数量
}

TCPServer TCP服务器

func NewTCPServer

func NewTCPServer(conf Conf) *TCPServer

NewTCPServer 创建TCP服务器

func (*TCPServer) Accept

func (t *TCPServer) Accept(listener *net.TCPListener)

Accept 接收客户端的TCP长连接的建立

func (*TCPServer) Start

func (t *TCPServer) Start()

Start 启动服务器

Jump to

Keyboard shortcuts

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