kcp

package
v0.8.1 Latest Latest
Warning

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

Go to latest
Published: Feb 28, 2023 License: MIT Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrWriteNotAll 未能将信息全部写入
	ErrWriteNotAll = errors.New("write not all")

	// ErrStopSend 已关闭,不再收发消息
	ErrStopSend = errors.New("stop send message")

	// ErrWriteTimeout 放入发送队列超时 3秒
	ErrWriteTimeout = errors.New("write timeout")
)

Functions

func NewClient

func NewClient(handler zeronetwork.HandlerFunc, opts ...ClientOption) zeronetwork.Client

NewClient 创建一个 kcp 客户端,测试使用

func NewServer

func NewServer(opts ...Option) zeronetwork.Peer

NewServer 创建一个 tcp 服务

Types

type ClientOption

type ClientOption func(*client)

ClientOption 设置配置选项

func WithClientCompress

func WithClientCompress(compress zerocompress.Compress) ClientOption

WithClientCompress 压缩与解压器

func WithClientCompressThreshold

func WithClientCompressThreshold(compressThreshold int) ClientOption

WithClientCompressThreshold 压缩的阈值,当消息负载长度超过该值时才会压缩

func WithClientDatapack

func WithClientDatapack(datapack zeronetwork.Datapack) ClientOption

WithClientDatapack 封包与解包

func WithClientLogger

func WithClientLogger(logger zerologger.Logger) ClientOption

WithClientLogger 设置日志

func WithClientLoggerLevel

func WithClientLoggerLevel(loggerLevel int) ClientOption

WithClientLoggerLevel 设置日志级别 见 https://github.com/zerogo-hub/zero-helper/blob/main/logger/logger.go WithLogger 设置日志

func WithClientOnConnClose

func WithClientOnConnClose(onConnClose zeronetwork.ConnFunc) ClientOption

WithClientOnConnClose 客户端连接关闭触发,此时客户端不可以再收发消息

func WithClientOnConnected

func WithClientOnConnected(onConnected zeronetwork.ConnFunc) ClientOption

WithClientOnConnected 客户端连接到来时触发,此时客户端已经可以开始收发消息

func WithClientRecvDeadLine

func WithClientRecvDeadLine(recvDeadLine time.Duration) ClientOption

WithClientRecvDeadLine 通信超时时间,最终调用 conn.SetReadDeadline

func WithClientRecvQueueSize

func WithClientRecvQueueSize(recvQueueSize int) ClientOption

WithClientRecvQueueSize 在 session 中接收到的消息队列大小,session 接收到消息后并非立即处理,而是丢到一个消息队列中,异步处理

func WithClientSendBufferSize

func WithClientSendBufferSize(sendBufferSize int) ClientOption

WithClientSendBufferSize 发送消息 buffer 大小

func WithClientSendDeadLine

func WithClientSendDeadLine(sendDeadLine time.Duration) ClientOption

WithClientSendDeadLine SendDeadline

func WithClientSendQueueSize

func WithClientSendQueueSize(sendQueueSize int) ClientOption

WithClientSendQueueSize 发送的消息队列大小,消息优先发送到 sesion 的消息队列,然后写入到套接字中

func WithClientWhetherCompress

func WithClientWhetherCompress(whetherCompress bool) ClientOption

WithClientWhetherCompress 是否需要对消息负载进行压缩

func WithClientWhetherCrypto

func WithClientWhetherCrypto(whetherCrypto bool) ClientOption

WithClientWhetherCrypto 是否需要对消息负载进行加密

type Config

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

Config KCP 的一些专属配置

type Option

type Option func(*server)

Option 设置配置选项

func WithAcknodelay

func WithAcknodelay(acknodelay bool) Option

WithAcknodelay 延迟 ack

func WithDatashard

func WithDatashard(datashard int) Option

WithDatashard 凑齐多少包,开始生成冗余包

func WithInterval

func WithInterval(interval int) Option

WithInterval 内部轮询周期,多久处理一批包

func WithMTU

func WithMTU(mtu int) Option

WithMTU 包 mtu,超过会拆包

func WithNC

func WithNC(nc int) Option

WithNC 不开拥塞控制,即不退让,只受收发窗口控制

func WithNocomp

func WithNocomp(nocomp bool) Option

WithNocomp 不压缩

func WithNodelay

func WithNodelay(nodelay int) Option

WithNodelay 开启nodelay,RTO=RTO+0.5RTO,否则RTO=RTO+RTO

func WithParityshard

func WithParityshard(parityshard int) Option

WithParityshard 冗余包生成个数

func WithRcvwnd

func WithRcvwnd(rcvwnd int) Option

WithRcvwnd 接收窗口

func WithResend

func WithResend(resend int) Option

WithResend 快速重传,N次ACK跨越将会直接重传

func WithSndwnd

func WithSndwnd(sndwnd int) Option

WithSndwnd 发送窗口

func WithSockbuf

func WithSockbuf(sockbuf int) Option

WithSockbuf socket 缓冲区

func WithStreamMode

func WithStreamMode(streamMode bool) Option

WithStreamMode 是否启用流模式

func WithTCP

func WithTCP(tcp bool) Option

WithTCP 是否使用 tcp 传输

Directories

Path Synopsis
example
client command
server command

Jump to

Keyboard shortcuts

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