zero

package module
v0.0.0-...-14ff0b0 Latest Latest
Warning

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

Go to latest
Published: Sep 18, 2018 License: MIT Imports: 12 Imported by: 0

README

zero

A Lightweight Socket Service with heartbeat, Can be easily used in TCP server development.

Requirements

Go version: 1.9.x or later

Usage

go get -u github.com/rocymp/zero
Server Case
import "github.com/rocymp/zero"

func main() {
 	host := "127.0.0.1:18787"

 	ss, err := zero.NewSocketService(host)
	if err != nil {
		return
	}

	// set Heartbeat
	ss.SetHeartBeat(5*time.Second, 30*time.Second)

	// net event
	ss.RegMessageHandler(HandleMessage)
	ss.RegConnectHandler(HandleConnect)
	ss.RegDisconnectHandler(HandleDisconnect)

	ss.Serv()
}


Client Case
package main

import (
	"github.com/rocymp/zero"
)

func main() {

	cs := zero.NewSocketClient("127.0.0.1:18888", 3)
	if cs == nil {
		log.Printf("connect failed\n")
		return 
	}

	// handler server message
	cs.RegMessageHandler(HandleMessage)

	// client online and heartbeat
	cs.Online()

	// client send message
	cs.SendMessage(23, []byte("hello world!"))

	// client stop
	cs.Stop()
	
}


Documentation

Index

Constants

View Source
const (
	// STUnknown Unknown
	STUnknown = iota
	// STInited Inited
	STInited
	// STRunning Running
	STRunning
	// STStop Stop
	STStop
)
View Source
const (
	// MsgHeartbeat heartbeat
	MsgHeartbeat = iota
	// MsgTaskStart 启动任务命令字
	MsgTaskStart
	// MsgTaskStop 停止任务命令字
	MsgTaskStop
)

Variables

This section is empty.

Functions

func Encode

func Encode(msg *Message) ([]byte, error)

Encode from Message to []byte

Types

type Conn

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

Conn wrap net.Conn

func NewConn

func NewConn(c net.Conn, hbInterval time.Duration, hbTimeout time.Duration) *Conn

NewConn create new conn

func (*Conn) Close

func (c *Conn) Close()

Close close connection

func (*Conn) GetName

func (c *Conn) GetName() string

GetName Get conn name

func (*Conn) SendMessage

func (c *Conn) SendMessage(msg *Message) error

SendMessage send message

type Message

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

Message struct

func Decode

func Decode(data []byte) (*Message, error)

Decode from []byte to Message

func NewMessage

func NewMessage(cmdID int32, data []byte) *Message

NewMessage create a new message

func (*Message) GetCMD

func (msg *Message) GetCMD() int32

GetCMD get message ID

func (*Message) GetData

func (msg *Message) GetData() []byte

GetData get message data

func (*Message) String

func (msg *Message) String() string

func (*Message) Verify

func (msg *Message) Verify() bool

Verify verify checksum

type Session

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

Session struct

func NewSession

func NewSession(conn *Conn) *Session

NewSession create a new session

func (*Session) BindUserID

func (s *Session) BindUserID(uid string)

BindUserID bind a user ID to session

func (*Session) GetConn

func (s *Session) GetConn() *Conn

GetConn get zero.Conn pointer

func (*Session) GetSessionID

func (s *Session) GetSessionID() string

GetSessionID get session ID

func (*Session) GetSetting

func (s *Session) GetSetting(key string) interface{}

GetSetting get setting

func (*Session) GetUserID

func (s *Session) GetUserID() string

GetUserID get user ID

func (*Session) SetConn

func (s *Session) SetConn(conn *Conn)

SetConn set a zero.Conn to session

func (*Session) SetSetting

func (s *Session) SetSetting(key string, value interface{})

SetSetting set setting

type SocketClient

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

SocketService struct

func NewSocketClient

func NewSocketClient(addr string, interval int) (sc *SocketClient)

func (*SocketClient) Online

func (s *SocketClient) Online()

Serv Start socket service

func (*SocketClient) RegMessageHandler

func (s *SocketClient) RegMessageHandler(handler func(*Message))

RegMessageHandler register message handler

func (*SocketClient) SendMessage

func (sc *SocketClient) SendMessage(cmdId int32, dataIn []byte) error

func (*SocketClient) Stop

func (s *SocketClient) Stop()

RegMessageHandler register message handler

type SocketService

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

SocketService struct

func NewSocketService

func NewSocketService(laddr string, hbInterval int) (*SocketService, error)

NewSocketService create a new socket service

func (*SocketService) Broadcast

func (s *SocketService) Broadcast(msg *Message)

Broadcast Broadcast to all connections

func (*SocketService) GetConnsCount

func (s *SocketService) GetConnsCount() int

GetConnsCount get connect count

func (*SocketService) GetSession

func (s *SocketService) GetSession() (res []Session)

GetSession 获取所有的会话

func (*SocketService) GetStatus

func (s *SocketService) GetStatus() int

GetStatus get socket service status

func (*SocketService) RegConnectHandler

func (s *SocketService) RegConnectHandler(handler func(*Session))

RegConnectHandler register connect handler

func (*SocketService) RegDisconnectHandler

func (s *SocketService) RegDisconnectHandler(handler func(*Session, error))

RegDisconnectHandler register disconnect handler

func (*SocketService) RegMessageHandler

func (s *SocketService) RegMessageHandler(handler func(*Session, *Message))

RegMessageHandler register message handler

func (*SocketService) Serv

func (s *SocketService) Serv()

Serv Start socket service

func (*SocketService) SetHeartBeat

func (s *SocketService) SetHeartBeat(hbInterval time.Duration, hbTimeout time.Duration) error

SetHeartBeat set heart beat

func (*SocketService) Stop

func (s *SocketService) Stop(reason string)

Stop stop socket service with reason

func (*SocketService) Unicast

func (s *SocketService) Unicast(sid string, msg *Message)

Unicast Unicast with session ID