seeker

package module
v0.0.0-...-7a0dcca Latest Latest
Warning

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

Go to latest
Published: Mar 26, 2021 License: Apache-2.0 Imports: 9 Imported by: 0

README

##go-seeker GO TCP服务开发框架,方便快速搭建一个TCP服务。

##安装方法

go get github.com/fbbin/go-seeker

##Examples

package main

import (
	"flag"
	"go-proxy/packet"
	"os"
	"os/signal"
	"syscall"
	"time"
	
	"github.com/fbbin/seeker"
	seelog "github.com/cihub/seelog"
)

// 定义系统信号通道
var signalChan = make(chan os.Signal, 1)

var (
	serverPort = flag.String("p", "0.0.0.0:20003", "服务监听的地址和端口号")
	logFileDir = flag.String("l", "./logs/", "服务器日志文件")
)

func main() {
	// 服务配置项
	config := &seeker.Config{
		Debug:                  false,
		ProtocolType:           "tcp4",
		BindAddress:            *serverPort,
		AcceptTimeout:          time.Second * 5,
		AcceptErrorLimit:       uint32(10),
		PacketSendChanLimit:    uint32(10),
		PacketReceiveChanLimit: uint32(10),
	}
	// 初始化日志
	initlog(config)
	// 事件回调
	dispatch := &ConnCallback{}
	dispatch.initialize()
	// 协议处理
	protocol := &packet.SelfProtocol{}
	// 初始化一个服务
	server := seeker.NewServer(config, dispatch, protocol)
	seelog.Info("------ Server " + *serverPort + " Has Started ------- ")
	// 启动服务
	go server.Start()
	// 监听系统服务退出信号
	signal.Notify(signalChan, syscall.SIGINT, syscall.SIGHUP, os.Interrupt, os.Kill)
	seelog.Info("Get Signal:%v\r\n", <-signalChan)

	// 服务退出
	server.Stop()
	seelog.Info("------ Server " + *serverPort + " Has Stopped ------- ")
}

func initlog(config *seeker.Config) {
	logger, err := seelog.LoggerFromConfigAsFile("./conf/seelog.xml")
	if err != nil {
		seelog.Critical("日志配置文件解析错误", err)
		return
	}
	seelog.ReplaceLogger(logger)
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func WriteLog

func WriteLog(line string)

Types

type Config

type Config struct {
	Debug bool
	// 定义服务类型(tcp)
	ProtocolType string
	// 服务端监听的ip和端口号
	BindAddress string
	// 接收超时时间
	AcceptTimeout time.Duration
	// 连接连续错误多少次退出
	AcceptErrorLimit uint32
	// 设置发送消息缓存区大小
	PacketSendChanLimit uint32
	// 设置发送消息缓存区大小
	PacketReceiveChanLimit uint32
}

type Conn

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

func NewConn

func NewConn(conn *net.TCPConn, server *Server) *Conn

初始化一个链接信息

func (*Conn) Close

func (conn *Conn) Close()

Close 关闭连接处理(原子操作)

func (*Conn) GetExtraData

func (conn *Conn) GetExtraData() interface{}

GetExtraData 获取额外参数

func (*Conn) GetRawConn

func (conn *Conn) GetRawConn() *net.TCPConn

GetRawConn 获取当前连接的指针

func (*Conn) Handle

func (conn *Conn) Handle()

Handle 维护接收,发送,协成的处理

func (*Conn) IsClosed

func (conn *Conn) IsClosed() bool

IsClosed 检测客户端是否已经关闭

func (*Conn) SendPacket

func (conn *Conn) SendPacket(data Packet, timeout time.Duration) (err error)

SendPacket 发送消息协议包给客户端

func (*Conn) SetExtraData

func (conn *Conn) SetExtraData(data interface{})

SetExtraData 设置额外参数

type ConnCallback

type ConnCallback interface {
	// 客户端链接上,回调该方法, 如果返回false,标识关闭链接
	OnConnect(*Conn) bool
	// 当服务收到一个数据包的时候回调,如果返回false,标识关闭链接
	OnMessage(*Conn, Packet) bool
	// 链接断开时回调
	OnClose(*Conn)
}

type Packet

type Packet interface {
	Serialize() []byte
}

type Protocol

type Protocol interface {
	ReadPacket(conn *net.TCPConn) (Packet, error)
}

type Server

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

func NewServer

func NewServer(config *Config, callback ConnCallback, protocol Protocol) *Server

初始化一个服务

func (*Server) Start

func (svr *Server) Start()

启动服务

func (*Server) Stop

func (svr *Server) Stop()

停止服务

Jump to

Keyboard shortcuts

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