Documentation ¶
Index ¶
- Constants
- Variables
- func SetLogger(logger Logger)
- func SetLoggerCallerDisable() error
- func SetLoggerLevel(level LoggerLevel) error
- type Client
- type ClientOption
- func WithClientSslEnabled(sslEnabled bool) ClientOption
- func WithClientTaskPool(pool gxsync.GenericTaskPool) ClientOption
- func WithClientTlsConfigBuilder(tlsConfigBuilder TlsConfigBuilder) ClientOption
- func WithConnectionNumber(num int) ClientOption
- func WithReconnectInterval(reconnectInterval int) ClientOption
- func WithRootCertificateFile(cert string) ClientOption
- func WithServerAddress(addr string) ClientOption
- type ClientOptions
- type ClientTlsConfigBuilder
- type CompressType
- type Connection
- type EndPoint
- type EndPointID
- type EndPointType
- type EventListener
- type Logger
- type LoggerLevel
- type NewSessionCallback
- type PacketServer
- type ReadWriter
- type Reader
- type Server
- type ServerOption
- func WithLocalAddress(addr string) ServerOption
- func WithServerSslEnabled(sslEnabled bool) ServerOption
- func WithServerTaskPool(pool gxsync.GenericTaskPool) ServerOption
- func WithServerTlsConfigBuilder(tlsConfigBuilder TlsConfigBuilder) ServerOption
- func WithWebsocketServerCert(cert string) ServerOption
- func WithWebsocketServerPath(path string) ServerOption
- func WithWebsocketServerPrivateKey(key string) ServerOption
- func WithWebsocketServerRootCert(cert string) ServerOption
- type ServerOptions
- type ServerTlsConfigBuilder
- type Session
- type StreamServer
- type TlsConfigBuilder
- type UDPContext
- type Writer
Constants ¶
const ( CompressNone CompressType = flate.NoCompression // 0 CompressZip = flate.DefaultCompression // -1 CompressBestSpeed = flate.BestSpeed // 1 CompressBestCompression = flate.BestCompression // 9 CompressHuffman = flate.HuffmanOnly // -2 CompressSnappy = 10 )
const ( // DebugLevel logs are typically voluminous, and are usually disabled in // production. LoggerLevelDebug = LoggerLevel(zapcore.DebugLevel) // InfoLevel is the default logging priority. LoggerLevelInfo = LoggerLevel(zapcore.InfoLevel) // WarnLevel logs are more important than Infof, but don't need individual // human review. LoggerLevelWarn = LoggerLevel(zapcore.WarnLevel) // ErrorLevel logs are high-priority. If an application is running smoothly, // it shouldn't generate any error-level logs. LoggerLevelError = LoggerLevel(zapcore.ErrorLevel) // DPanicLevel logs are particularly important errors. In development the // logger panics after writing the message. LoggerLevelDPanic = LoggerLevel(zapcore.DPanicLevel) // PanicLevel logs a message, then panics. LoggerLevelPanic = LoggerLevel(zapcore.PanicLevel) // FatalLevel logs a message, then calls os.Exit(1). LoggerLevelFatal = LoggerLevel(zapcore.FatalLevel) )
const (
// MaxWheelTimeSpan 900s, 15 minute
MaxWheelTimeSpan = 900e9
)
Variables ¶
var ( ErrSessionClosed = perrors.New("session Already Closed") ErrSessionBlocked = perrors.New("session Full Blocked") ErrNullPeerAddr = perrors.New("peer address is nil") )
var EndPointType_name = map[int32]string{
0: "UDP_ENDPOINT",
1: "UDP_CLIENT",
2: "TCP_CLIENT",
3: "WS_CLIENT",
4: "WSS_CLIENT",
7: "TCP_SERVER",
8: "WS_SERVER",
9: "WSS_SERVER",
}
var EndPointType_value = map[string]int32{
"UDP_ENDPOINT": 0,
"UDP_CLIENT": 1,
"TCP_CLIENT": 2,
"WS_CLIENT": 3,
"WSS_CLIENT": 4,
"TCP_SERVER": 7,
"WS_SERVER": 8,
"WSS_SERVER": 9,
}
Functions ¶
func SetLogger ¶ added in v1.3.10
func SetLogger(logger Logger)
SetLogger: customize yourself logger.
func SetLoggerCallerDisable ¶ added in v1.3.10
func SetLoggerCallerDisable() error
SetLoggerCallerDisable: disable caller info in production env for performance improve. It is highly recommended that you execute this method in a production environment.
Types ¶
type Client ¶
type Client interface { EndPoint }
func NewTCPClient ¶ added in v0.8.3
func NewTCPClient(opts ...ClientOption) Client
NewTcpClient function builds a tcp client.
func NewUDPClient ¶ added in v0.8.3
func NewUDPClient(opts ...ClientOption) Client
NewUdpClient function builds a connected udp client
func NewWSClient ¶ added in v0.8.3
func NewWSClient(opts ...ClientOption) Client
NewWsClient function builds a ws client.
func NewWSSClient ¶ added in v0.8.3
func NewWSSClient(opts ...ClientOption) Client
NewWSSClient function builds a wss client.
type ClientOption ¶ added in v0.8.3
type ClientOption func(*ClientOptions)
func WithClientSslEnabled ¶ added in v1.3.10
func WithClientSslEnabled(sslEnabled bool) ClientOption
@WithSslEnabled enable use tls
func WithClientTaskPool ¶ added in v1.4.0
func WithClientTaskPool(pool gxsync.GenericTaskPool) ClientOption
@pool client task pool.
func WithClientTlsConfigBuilder ¶ added in v1.3.10
func WithClientTlsConfigBuilder(tlsConfigBuilder TlsConfigBuilder) ClientOption
@WithClientKeyCertChainPath sslConfig is tls config
func WithConnectionNumber ¶ added in v0.8.3
func WithConnectionNumber(num int) ClientOption
@num is connection number.
func WithReconnectInterval ¶ added in v1.3.10
func WithReconnectInterval(reconnectInterval int) ClientOption
@reconnectInterval is server address.
func WithRootCertificateFile ¶ added in v0.8.3
func WithRootCertificateFile(cert string) ClientOption
@certs is client certificate file. it can be empty.
func WithServerAddress ¶ added in v0.8.3
func WithServerAddress(addr string) ClientOption
@addr is server address.
type ClientOptions ¶ added in v0.8.3
type ClientOptions struct {
// contains filtered or unexported fields
}
type ClientTlsConfigBuilder ¶ added in v1.3.10
type ClientTlsConfigBuilder struct { ClientKeyCertChainPath string ClientPrivateKeyPath string ClientKeyPassword string ClientTrustCertCollectionPath string }
ClientTlsConfigBuilder impl TlsConfigBuilder for client
func (*ClientTlsConfigBuilder) BuildTlsConfig ¶ added in v1.3.10
func (c *ClientTlsConfigBuilder) BuildTlsConfig() (*tls.Config, error)
BuildTlsConfig impl TlsConfigBuilder method
type CompressType ¶ added in v0.8.3
type CompressType int
type Connection ¶ added in v0.8.3
type Connection interface { ID() uint32 SetCompressType(CompressType) LocalAddr() string RemoteAddr() string // update session's active time UpdateActive() // get session's active time GetActive() time.Time // SetReadTimeout sets deadline for the future read calls. SetReadTimeout(time.Duration) // SetWriteTimeout sets deadline for the future read calls. SetWriteTimeout(time.Duration) // contains filtered or unexported methods }
type EndPoint ¶ added in v0.8.3
type EndPoint interface { // get EndPoint ID ID() EndPointID // get endpoint type EndPointType() EndPointType // run event loop and serves client request. RunEventLoop(newSession NewSessionCallback) // check the endpoint has been closed IsClosed() bool // close the endpoint and free its resource Close() GetTaskPool() gxsync.GenericTaskPool }
type EndPointID ¶ added in v1.3.10
type EndPointID = int32
type EndPointType ¶ added in v0.8.3
type EndPointType int32
const ( UDP_ENDPOINT EndPointType = 0 UDP_CLIENT EndPointType = 1 TCP_CLIENT EndPointType = 2 WS_CLIENT EndPointType = 3 WSS_CLIENT EndPointType = 4 TCP_SERVER EndPointType = 7 WS_SERVER EndPointType = 8 WSS_SERVER EndPointType = 9 )
func (EndPointType) String ¶ added in v0.8.3
func (x EndPointType) String() string
type EventListener ¶
type EventListener interface { // invoked when session opened // If the return error is not nil, @Session will be closed. OnOpen(Session) error // invoked when session closed. OnClose(Session) // invoked when got error. OnError(Session, error) // invoked periodically, its period can be set by (Session)SetCronPeriod OnCron(Session) // invoked when getty received a package. Pls attention that do not handle long time // logic processing in this func. You'd better set the package's maximum length. // If the message's length is greater than it, u should should return err in // Reader{Read} and getty will close this connection soon. // // If ur logic processing in this func will take a long time, u should start a goroutine // pool(like working thread pool in cpp) to handle the processing asynchronously. Or u // can do the logic processing in other asynchronous way. // !!!In short, ur OnMessage callback func should return asap. // // If this is a udp event listener, the second parameter type is UDPContext. OnMessage(Session, interface{}) }
EventListener is used to process pkg that received from remote session
type Logger ¶ added in v1.3.10
type Logger interface { Info(args ...interface{}) Warn(args ...interface{}) Error(args ...interface{}) Debug(args ...interface{}) Infof(fmt string, args ...interface{}) Warnf(fmt string, args ...interface{}) Errorf(fmt string, args ...interface{}) Debugf(fmt string, args ...interface{}) }
Logger for user who want to customize logger of getty
type LoggerLevel ¶ added in v1.3.10
type LoggerLevel int8
type NewSessionCallback ¶
NewSessionCallback will be invoked when server accepts a new client connection or client connects to server successfully. If there are too many client connections or u do not want to connect a server again, u can return non-nil error. And then getty will close the new session.
type PacketServer ¶ added in v1.3.10
type PacketServer interface { Server // get the network listener PacketConn() net.PacketConn }
PacketServer is like udp listen endpoint
type ReadWriter ¶
ReadWriter interface use for handle application packages
type Reader ¶
type Reader interface { // Parse tcp/udp/websocket pkg from buffer and if possible return a complete pkg. // When receiving a tcp network streaming segment, there are 4 cases as following: // case 1: a error found in the streaming segment; // case 2: can not unmarshal a pkg header from the streaming segment; // case 3: unmarshal a pkg header but can not unmarshal a pkg from the streaming segment; // case 4: just unmarshal a pkg from the streaming segment; // case 5: unmarshal more than one pkg from the streaming segment; // // The return value is (nil, 0, error) as case 1. // The return value is (nil, 0, nil) as case 2. // The return value is (nil, pkgLen, nil) as case 3. // The return value is (pkg, pkgLen, nil) as case 4. // The handleTcpPackage may invoke func Read many times as case 5. Read(Session, []byte) (interface{}, int, error) }
Reader is used to unmarshal a complete pkg from buffer
type Server ¶
type Server interface { EndPoint }
Server interface
func NewTCPServer ¶ added in v0.8.3
func NewTCPServer(opts ...ServerOption) Server
NewTCPServer builds a tcp server.
func NewUDPPEndPoint ¶ added in v0.8.3
func NewUDPPEndPoint(opts ...ServerOption) Server
NewUDPEndPoint builds a unconnected udp server.
func NewWSSServer ¶ added in v0.8.3
func NewWSSServer(opts ...ServerOption) Server
NewWSSServer builds a secure websocket server.
func NewWSServer ¶ added in v0.8.3
func NewWSServer(opts ...ServerOption) Server
NewWSServer builds a websocket server.
type ServerOption ¶ added in v0.8.3
type ServerOption func(*ServerOptions)
func WithLocalAddress ¶ added in v0.8.3
func WithLocalAddress(addr string) ServerOption
@addr server listen address.
func WithServerSslEnabled ¶ added in v1.3.10
func WithServerSslEnabled(sslEnabled bool) ServerOption
@WithSslEnabled enable use tls
func WithServerTaskPool ¶ added in v1.4.0
func WithServerTaskPool(pool gxsync.GenericTaskPool) ServerOption
@pool server task pool.
func WithServerTlsConfigBuilder ¶ added in v1.3.10
func WithServerTlsConfigBuilder(tlsConfigBuilder TlsConfigBuilder) ServerOption
@WithServerKeyCertChainPath sslConfig is tls config
func WithWebsocketServerCert ¶ added in v0.8.3
func WithWebsocketServerCert(cert string) ServerOption
@cert: server certificate file
func WithWebsocketServerPath ¶ added in v0.8.3
func WithWebsocketServerPath(path string) ServerOption
@path: websocket request url path
func WithWebsocketServerPrivateKey ¶ added in v0.8.3
func WithWebsocketServerPrivateKey(key string) ServerOption
@key: server private key(contains its public key)
func WithWebsocketServerRootCert ¶ added in v0.8.3
func WithWebsocketServerRootCert(cert string) ServerOption
@cert is the root certificate file to verify the legitimacy of server
type ServerOptions ¶ added in v0.8.3
type ServerOptions struct {
// contains filtered or unexported fields
}
type ServerTlsConfigBuilder ¶ added in v1.3.10
type ServerTlsConfigBuilder struct { ServerKeyCertChainPath string ServerPrivateKeyPath string ServerKeyPassword string ServerTrustCertCollectionPath string }
ServerTlsConfigBuilder impl TlsConfigBuilder for server
func (*ServerTlsConfigBuilder) BuildTlsConfig ¶ added in v1.3.10
func (s *ServerTlsConfigBuilder) BuildTlsConfig() (*tls.Config, error)
BuildTlsConfig impl TlsConfigBuilder method
type Session ¶
type Session interface { Connection Reset() Conn() net.Conn Stat() string IsClosed() bool // get endpoint type EndPoint() EndPoint SetMaxMsgLen(int) SetName(string) SetEventListener(EventListener) SetPkgHandler(ReadWriter) SetReader(Reader) SetWriter(Writer) SetCronPeriod(int) SetWaitTime(time.Duration) GetAttribute(interface{}) interface{} SetAttribute(interface{}, interface{}) RemoveAttribute(interface{}) // the Writer will invoke this function. Pls attention that if timeout is less than 0, WritePkg will send @pkg asap. // for udp session, the first parameter should be UDPContext. // totalBytesLength: @pkg stream bytes length after encoding @pkg. // sendBytesLength: stream bytes length that sent out successfully. // err: maybe it has illegal data, encoding error, or write out system error. WritePkg(pkg interface{}, timeout time.Duration) (totalBytesLength int, sendBytesLength int, err error) WriteBytes([]byte) (int, error) WriteBytesArray(...[]byte) (int, error) Close() }
type StreamServer ¶ added in v1.3.10
StreamServer is like tcp/websocket/wss server
type TlsConfigBuilder ¶ added in v1.3.10
TlsConfigBuilder tls config builder interface
type UDPContext ¶ added in v0.8.3
func (UDPContext) String ¶ added in v0.8.3
func (c UDPContext) String() string