Documentation ¶
Overview ¶
Copyright 2023-2024 antlabs. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright 2023-2024 antlabs. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright 2023-2024 antlabs. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright 2023-2024 antlabs. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright 2021-2024 antlabs. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright 2023-2024 antlabs. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright 2023-2024 antlabs. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright 2023-2024 antlabs. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright 2023-2024 antlabs. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright 2023-2024 antlabs. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright 2023-2024 antlabs. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
抽象出timer定时器接口, 包含reset和stop两个方法
Copyright 2023-2024 antlabs. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Index ¶
- Constants
- Variables
- func GetPayloadBytes(n int) (rv *[]byte)
- func PutPayloadBytes(bytes *[]byte)
- func StringToBytes(s string) (b []byte)
- type Callback
- type ClientOption
- func WithClientBindHTTPHeader(h *http.Header) ClientOption
- func WithClientCallback(cb Callback) ClientOption
- func WithClientCallbackFunc(open OnOpenFunc, m OnMessageFunc, c OnCloseFunc) ClientOption
- func WithClientCallbackInEventLoop() ClientOption
- func WithClientCompression() ClientOption
- func WithClientCustomTaskMode(taskName string) ClientOption
- func WithClientDecompressAndCompress() ClientOption
- func WithClientDecompression() ClientOption
- func WithClientDelayWriteInitBufferSize(n int32) ClientOption
- func WithClientDialTimeout(t time.Duration) ClientOption
- func WithClientDisableBufioClearHack() ClientOption
- func WithClientEnableUTF8Check() ClientOption
- func WithClientHTTPHeader(h http.Header) ClientOption
- func WithClientIgnorePong() ClientOption
- func WithClientMaxDelayWriteDuration(d time.Duration) ClientOption
- func WithClientMaxDelayWriteNum(n int32) ClientOption
- func WithClientMultiEventLoop(m *MultiEventLoop) ClientOption
- func WithClientOnCloseFunc(onClose func(c *Conn, err error)) ClientOption
- func WithClientOnMessageFunc(cb OnMessageFunc) ClientOption
- func WithClientReadTimeout(t time.Duration) ClientOption
- func WithClientReplyPing() ClientOption
- func WithClientStreamMode() ClientOption
- func WithClientTCPDelay() ClientOption
- func WithClientTLSConfig(tls *tls.Config) ClientOption
- func WithClientUnstreamMode() ClientOption
- func WithClientWindowsMultipleTimesPayloadSize(mt float32) ClientOption
- type CloseErrMsg
- type Config
- type Conn
- func (c *Conn) Close()
- func (c *Conn) SetWriteDeadline(t time.Time) error
- func (c *Conn) StartReadLoop()
- func (c *Conn) Write(b []byte) (n int, err error)
- func (c *Conn) WriteCloseTimeout(sc StatusCode, t time.Duration) (err error)
- func (c *Conn) WriteControl(op Opcode, data []byte) (err error)
- func (c *Conn) WriteMessage(op Opcode, writeBuf []byte) (err error)
- func (c *Conn) WritePing(data []byte) (err error)
- func (c *Conn) WritePong(data []byte) (err error)
- func (c *Conn) WriteTimeout(op Opcode, data []byte, t time.Duration) (err error)
- type ConnOption
- type DefCallback
- type DialOption
- type EvOption
- type EventLoop
- type MultiEventLoop
- func (m *MultiEventLoop) GetApiName() string
- func (m *MultiEventLoop) GetCurConnNum() int64
- func (m *MultiEventLoop) GetCurGoNum() (total int)
- func (m *MultiEventLoop) GetCurTaskNum() (total int64)
- func (m *MultiEventLoop) GetMoveBytesNum() uint64
- func (m *MultiEventLoop) GetPollEvNum() int64
- func (m *MultiEventLoop) GetReadEvNum() int64
- func (m *MultiEventLoop) GetReadSyscallNum() int64
- func (m *MultiEventLoop) GetReallocNum() int64
- func (m *MultiEventLoop) GetWriteEvNum() int64
- func (m *MultiEventLoop) GetWriteSyscallNum() int64
- func (m *MultiEventLoop) Start()
- type OnCloseFunc
- type OnMessageFunc
- type OnOpenFunc
- type Opcode
- type ServerOption
- func WithServerCallback(cb Callback) ServerOption
- func WithServerCallbackFunc(open OnOpenFunc, m OnMessageFunc, c OnCloseFunc) ServerOption
- func WithServerCallbackInEventLoop() ServerOption
- func WithServerCustomTaskMode(taskName string) ServerOption
- func WithServerDecompressAndCompress() ServerOption
- func WithServerDecompression() ServerOption
- func WithServerDelayWriteInitBufferSize(n int32) ServerOption
- func WithServerDisableBufioClearHack() ServerOption
- func WithServerEnableUTF8Check() ServerOption
- func WithServerIgnorePong() ServerOption
- func WithServerMaxDelayWriteDuration(d time.Duration) ServerOption
- func WithServerMaxDelayWriteNum(n int32) ServerOption
- func WithServerMultiEventLoop(m *MultiEventLoop) ServerOption
- func WithServerOnCloseFunc(onClose func(c *Conn, err error)) ServerOption
- func WithServerOnMessageFunc(cb OnMessageFunc) ServerOption
- func WithServerReadTimeout(t time.Duration) ServerOption
- func WithServerReplyPing() ServerOption
- func WithServerStreamMode() ServerOption
- func WithServerSubprotocols(subprotocols []string) ServerOption
- func WithServerTCPDelay() ServerOption
- func WithServerUnstreamMode() ServerOption
- func WithServerWindowsMultipleTimesPayloadSize(mt float32) ServerOption
- type StatusCode
- type Timer
- type UpgradeServer
Constants ¶
const ( EVENT_EPOLL evFlag = 1 << iota EVENT_IOURING )
Variables ¶
var ( ErrInvalidDeadline = errors.New("invalid deadline") // 读超时 ErrReadTimeout = errors.New("read timeout") // 写超时 ErrWriteTimeout = errors.New("write timeout") )
var ( // conn已经被关闭 ErrClosed = errors.New("closed") ErrWrongStatusCode = errors.New("Wrong status code") ErrUpgradeFieldValue = errors.New("The value of the upgrade field is not 'websocket'") ErrConnectionFieldValue = errors.New("The value of the connection field is not 'upgrade'") ErrSecWebSocketAccept = errors.New("The value of Sec-WebSocketAaccept field is invalid") ErrHostCannotBeEmpty = errors.New("Host cannot be empty") ErrSecWebSocketKey = errors.New("The value of SEC websocket key field is wrong") ErrSecWebSocketVersion = errors.New("The value of SEC websocket version field is wrong, not 13") ErrHTTPProtocolNotSupported = errors.New("HTTP protocol not supported") ErrOnlyGETSupported = errors.New("error:Only get methods are supported") ErrMaxControlFrameSize = errors.New("error:max control frame size > 125, need <= 125") ErrRsv123 = errors.New("error:rsv1 or rsv2 or rsv3 has a value") ErrOpcode = errors.New("error:wrong opcode") ErrNOTBeFragmented = errors.New("error:since control message MUST NOT be fragmented") ErrFrameOpcode = errors.New("error:since all data frames after the initial data frame must have opcode 0.") ErrTextNotUTF8 = errors.New("error:text is not utf8 data") ErrClosePayloadTooSmall = errors.New("error:close payload too small") ErrCloseValue = errors.New("error:close value is wrong") // close值不对 ErrEmptyClose = errors.New("error:close value is empty") // close的值是空的 ErrWriteClosed = errors.New("write close") )
var ( // 事件循环为空 ErrEventLoopEmpty = errors.New("event loop is empty, Need to call WithServerMultiEventLoop or WithClientMultiEventLoop for configuration") // 事件循环没有启动 ErrEventLoopNotStart = errors.New("event loop not start") )
var (
ErrNotFoundHijacker = errors.New("not found Hijacker")
)
Functions ¶
func GetPayloadBytes ¶
func PutPayloadBytes ¶
func PutPayloadBytes(bytes *[]byte)
Types ¶
type ClientOption ¶
type ClientOption func(*DialOption)
func WithClientBindHTTPHeader ¶
func WithClientBindHTTPHeader(h *http.Header) ClientOption
6.获取http header
func WithClientCallback ¶
func WithClientCallback(cb Callback) ClientOption
1. callback 配置客户端callback
func WithClientCallbackFunc ¶
func WithClientCallbackFunc(open OnOpenFunc, m OnMessageFunc, c OnCloseFunc) ClientOption
0. CallbackFunc
func WithClientCallbackInEventLoop ¶ added in v0.0.12
func WithClientCallbackInEventLoop() ClientOption
18.2 配置服务端Callback相关方法在io event loop中执行
func WithClientCustomTaskMode ¶ added in v0.1.8
func WithClientCustomTaskMode(taskName string) ClientOption
20.2 配置自定义task, 需要确保传入的值是有效的,不然会panic
func WithClientDecompressAndCompress ¶
func WithClientDecompressAndCompress() ClientOption
5.配置压缩和解压缩
func WithClientDelayWriteInitBufferSize ¶
func WithClientDelayWriteInitBufferSize(n int32) ClientOption
15.2 配置延迟包的初始化buffer大小
func WithClientDialTimeout ¶
func WithClientDialTimeout(t time.Duration) ClientOption
3.配置握手时的timeout
func WithClientDisableBufioClearHack ¶
func WithClientDisableBufioClearHack() ClientOption
func WithClientEnableUTF8Check ¶
func WithClientEnableUTF8Check() ClientOption
func WithClientMaxDelayWriteDuration ¶
func WithClientMaxDelayWriteDuration(d time.Duration) ClientOption
13. 配置延迟发送 配置延迟最大发送时间
func WithClientMaxDelayWriteNum ¶
func WithClientMaxDelayWriteNum(n int32) ClientOption
14.2 配置最大延迟个数.client
func WithClientMultiEventLoop ¶ added in v0.1.6
func WithClientMultiEventLoop(m *MultiEventLoop) ClientOption
func WithClientOnCloseFunc ¶
func WithClientOnCloseFunc(onClose func(c *Conn, err error)) ClientOption
17.2 配置客户端OnClose
func WithClientOnMessageFunc ¶
func WithClientOnMessageFunc(cb OnMessageFunc) ClientOption
仅仅配置OnMessae函数
func WithClientReadTimeout ¶
func WithClientReadTimeout(t time.Duration) ClientOption
16.2 .设置客户端读超时时间
func WithClientReplyPing ¶
func WithClientReplyPing() ClientOption
配置自动回应ping frame, 当收到ping, 回一个pong
func WithClientStreamMode ¶ added in v0.1.1
func WithClientStreamMode() ClientOption
默认模式 19.2 配置客户端使用stream模式处理请求,go程会复用,保证OnMessage的处理是有序的
func WithClientUnstreamMode ¶ added in v0.1.9
func WithClientUnstreamMode() ClientOption
默认stream2,忽略这个API 19.2 配置客户端使用stream模式处理请求,go程会复用,但是不保证顺序性,如果你的请求对时序有要求,请不要使用这个模式,
func WithClientWindowsMultipleTimesPayloadSize ¶
func WithClientWindowsMultipleTimesPayloadSize(mt float32) ClientOption
type CloseErrMsg ¶
type CloseErrMsg struct { Code StatusCode Msg string }
func (CloseErrMsg) Error ¶
func (c CloseErrMsg) Error() string
type Conn ¶
type Conn struct { *Config // 配置 // contains filtered or unexported fields }
func Dial ¶
func Dial(rawUrl string, opts ...ClientOption) (*Conn, error)
https://datatracker.ietf.org/doc/html/rfc6455#section-4.1 又是一顿if else, 咬文嚼字
func Upgrade ¶
func Upgrade(w http.ResponseWriter, r *http.Request, opts ...ServerOption) (c *Conn, err error)
func (*Conn) SetWriteDeadline ¶ added in v0.1.6
TODO:
func (*Conn) WriteCloseTimeout ¶ added in v0.1.6
func (c *Conn) WriteCloseTimeout(sc StatusCode, t time.Duration) (err error)
func (*Conn) WriteControl ¶ added in v0.1.6
type ConnOption ¶
type ConnOption struct {
Config
}
type DefCallback ¶
type DefCallback struct{}
1. 默认的OnOpen, OnMessage, OnClose都是空函数
func (*DefCallback) OnClose ¶
func (defcallback *DefCallback) OnClose(_ *Conn, _ error)
func (*DefCallback) OnMessage ¶
func (defcallback *DefCallback) OnMessage(_ *Conn, _ Opcode, _ []byte)
func (*DefCallback) OnOpen ¶
func (defcallback *DefCallback) OnOpen(_ *Conn)
type DialOption ¶
func ClientOptionToConf ¶
func ClientOptionToConf(opts ...ClientOption) *DialOption
func (*DialOption) Dial ¶
func (d *DialOption) Dial() (c *Conn, err error)
type EvOption ¶
type EvOption func(e *MultiEventLoop)
func WithBusinessGoNum ¶ added in v0.0.7
最小业务goroutine数量, 控制业务go程数量 initCount: 初始化的协程数 min: 最小协程数 max: 最大协程数
func WithDisableParseInParseLoop ¶ added in v0.1.7
func WithDisableParseInParseLoop() EvOption
关闭: 在解析循环中运行websocket OnOpen, OnMessage, OnClose 回调函数
func WithParseInParseLoop ¶ added in v0.1.6
func WithParseInParseLoop() EvOption
默认行为: 在解析循环中运行websocket OnOpen, OnMessage, OnClose 回调函数
type EventLoop ¶
type EventLoop struct {
// contains filtered or unexported fields
}
func CreateEventLoop ¶
func CreateEventLoop(setSize int, flag evFlag, parent *MultiEventLoop) (e *EventLoop, err error)
初始化函数
func (*EventLoop) GetApiName ¶
type MultiEventLoop ¶
func NewMultiEventLoop ¶
func NewMultiEventLoop(opts ...EvOption) (e *MultiEventLoop, err error)
创建一个多路事件循环
func NewMultiEventLoopAndStartMust ¶ added in v0.1.6
func NewMultiEventLoopAndStartMust(opts ...EvOption) (m *MultiEventLoop)
初始化一个多路事件循环,并且运行它
func NewMultiEventLoopMust ¶
func NewMultiEventLoopMust(opts ...EvOption) *MultiEventLoop
func (*MultiEventLoop) GetCurConnNum ¶
func (m *MultiEventLoop) GetCurConnNum() int64
对外接口,查询当前websocket连接数
func (*MultiEventLoop) GetCurGoNum ¶ added in v0.0.10
func (m *MultiEventLoop) GetCurGoNum() (total int)
对外接口,查询当前业务协程池个数
func (*MultiEventLoop) GetCurTaskNum ¶
func (m *MultiEventLoop) GetCurTaskNum() (total int64)
对外接口,查询业务协程池运行的当前业务数
func (*MultiEventLoop) GetMoveBytesNum ¶ added in v0.0.9
func (m *MultiEventLoop) GetMoveBytesNum() uint64
对外接口,查询移动字节数
func (*MultiEventLoop) GetPollEvNum ¶ added in v0.0.9
func (m *MultiEventLoop) GetPollEvNum() int64
对外接口,查询poll 返回的事件总次数
func (*MultiEventLoop) GetReadEvNum ¶ added in v0.0.9
func (m *MultiEventLoop) GetReadEvNum() int64
对外接口,查询poll read事件次数
func (*MultiEventLoop) GetReadSyscallNum ¶ added in v0.0.9
func (m *MultiEventLoop) GetReadSyscallNum() int64
对外接口,查询read syscall次数
func (*MultiEventLoop) GetReallocNum ¶ added in v0.0.9
func (m *MultiEventLoop) GetReallocNum() int64
对外接口,查询重新分配内存次数
func (*MultiEventLoop) GetWriteEvNum ¶ added in v0.0.9
func (m *MultiEventLoop) GetWriteEvNum() int64
对外接口,查询poll write事件次数
func (*MultiEventLoop) GetWriteSyscallNum ¶ added in v0.0.9
func (m *MultiEventLoop) GetWriteSyscallNum() int64
对外接口,查询write syscall次数
type OnCloseFunc ¶
3. 只设置OnClose, 和OnMessage互斥
func (OnCloseFunc) OnClose ¶
func (o OnCloseFunc) OnClose(c *Conn, err error)
func (OnCloseFunc) OnOpen ¶
func (o OnCloseFunc) OnOpen(_ *Conn)
type OnMessageFunc ¶
2. 只设置OnMessage, 和OnClose互斥
func (OnMessageFunc) OnClose ¶
func (o OnMessageFunc) OnClose(_ *Conn, _ error)
func (OnMessageFunc) OnOpen ¶
func (o OnMessageFunc) OnOpen(_ *Conn)
type OnOpenFunc ¶
type OnOpenFunc func(*Conn)
type ServerOption ¶
type ServerOption func(*ConnOption)
func WithServerCallbackFunc ¶
func WithServerCallbackFunc(open OnOpenFunc, m OnMessageFunc, c OnCloseFunc) ServerOption
配置服务端回调函数
func WithServerCallbackInEventLoop ¶ added in v0.0.12
func WithServerCallbackInEventLoop() ServerOption
18.1 配置服务端Callback相关方法在io event loop中执行
func WithServerCustomTaskMode ¶ added in v0.1.8
func WithServerCustomTaskMode(taskName string) ServerOption
20.1 配置自定义task, 需要确保传入的值是有效的,不然会panic
func WithServerDecompressAndCompress ¶
func WithServerDecompressAndCompress() ServerOption
1.配置压缩和解压缩
func WithServerDecompression ¶
func WithServerDecompression() ServerOption
func WithServerDelayWriteInitBufferSize ¶
func WithServerDelayWriteInitBufferSize(n int32) ServerOption
15.1 配置延迟包的初始化buffer大小
func WithServerDisableBufioClearHack ¶
func WithServerDisableBufioClearHack() ServerOption
11 关闭bufio clear hack优化
func WithServerIgnorePong ¶
func WithServerIgnorePong() ServerOption
func WithServerMaxDelayWriteDuration ¶
func WithServerMaxDelayWriteDuration(d time.Duration) ServerOption
13. 配置延迟发送 配置延迟最大发送时间
func WithServerMaxDelayWriteNum ¶
func WithServerMaxDelayWriteNum(n int32) ServerOption
14.1 配置最大延迟个数.server
func WithServerMultiEventLoop ¶
func WithServerMultiEventLoop(m *MultiEventLoop) ServerOption
last 配置event
func WithServerOnCloseFunc ¶
func WithServerOnCloseFunc(onClose func(c *Conn, err error)) ServerOption
17。 只配置OnClose 17.1 配置服务端OnClose
func WithServerOnMessageFunc ¶
func WithServerOnMessageFunc(cb OnMessageFunc) ServerOption
4.仅仅配置OnMessae函数 仅仅配置OnMessae函数
func WithServerReadTimeout ¶
func WithServerReadTimeout(t time.Duration) ServerOption
16. 配置读超时时间
16.1 .设置服务端读超时时间
func WithServerReplyPing ¶
func WithServerReplyPing() ServerOption
5. 配置自动回应ping frame, 当收到ping, 回一个pong
func WithServerStreamMode ¶ added in v0.1.1
func WithServerStreamMode() ServerOption
默认模式 19.1 配置服务端使用stream模式处理请求,go程会复用,保证OnMessage的处理是有序的
func WithServerSubprotocols ¶
func WithServerSubprotocols(subprotocols []string) ServerOption
2. 设置服务端支持的子协议
func WithServerTCPDelay ¶
func WithServerTCPDelay() ServerOption
设置TCP_NODELAY 为false, 开启nagle算法 设置服务端TCP_NODELAY
func WithServerUnstreamMode ¶ added in v0.1.9
func WithServerUnstreamMode() ServerOption
20.1 配置服务端使用unstream模式处理请求,go程会复用, 但是不保证顺序性,如果你的请求对时序有要求,请不要使用这个模式,
func WithServerWindowsMultipleTimesPayloadSize ¶
func WithServerWindowsMultipleTimesPayloadSize(mt float32) ServerOption
7. 设置几倍payload的缓冲区 只有解析方式是窗口的时候才有效 如果为1.0就是1024 + 14, 如果是2.0就是2048 + 14
type StatusCode ¶
type StatusCode int16
https://datatracker.ietf.org/doc/html/rfc6455#section-7.4.1 这里记录了各种状态码的含义
const ( // NormalClosure 正常关闭 NormalClosure StatusCode = 1000 // EndpointGoingAway 对端正在消失 EndpointGoingAway StatusCode = 1001 // ProtocolError 表示对端由于协议错误正在终止连接 ProtocolError StatusCode = 1002 // DataCannotAccept 收到一个不能接受的数据类型 DataCannotAccept StatusCode = 1003 // NotConsistentMessageType 表示对端正在终止连接, 消息类型不一致 NotConsistentMessageType StatusCode = 1007 // TerminatingConnection 表示对端正在终止连接, 没有好用的错误, 可以用这个错误码表示 TerminatingConnection StatusCode = 1008 // TooBigMessage 消息太大, 不能处理, 关闭连接 TooBigMessage StatusCode = 1009 // NoExtensions 只用于客户端, 服务端返回扩展消息 NoExtensions StatusCode = 1010 // ServerTerminating 服务端遇到意外情况, 中止请求 ServerTerminating StatusCode = 1011 )
func (StatusCode) String ¶
func (s StatusCode) String() string
type UpgradeServer ¶
type UpgradeServer struct {
// contains filtered or unexported fields
}
func NewUpgrade ¶
func NewUpgrade(opts ...ServerOption) *UpgradeServer
func (*UpgradeServer) Upgrade ¶
func (u *UpgradeServer) Upgrade(w http.ResponseWriter, r *http.Request) (c *Conn, err error)
Source Files ¶
- api_epoll.go
- api_linux.go
- callback.go
- client.go
- client_options.go
- common_options.go
- compression.go
- config.go
- conn_core.go
- conn_unix.go
- err.go
- event_loop.go
- multi_event_loops.go
- multi_event_loops_option.go
- once.go
- opcode.go
- parser_ext.go
- payload_big_pool.go
- payload_pool.go
- safe_conn.go
- select_task.go
- server_handshake.go
- server_options.go
- stat.go
- status_codes.go
- task_parse.go
- time_api.go
- timer.go
- upgrade.go
- utils.go