Documentation ¶
Index ¶
- Constants
- type Bind
- type Codec
- type ConnectID
- type Connecter
- type ListenID
- type Listener
- type Netmgr
- func (this *Netmgr) AddConnectTCP(ip, port string, timeout time.Duration, bind Bind, unbind Unbind, wrong Wrong) ConnectID
- func (this *Netmgr) AddListenTCP(ip, port string, bind Bind, unbind Unbind, wrong Wrong) ListenID
- func (this *Netmgr) DelConnect(connectID ConnectID)
- func (this *Netmgr) DelListen(listenID ListenID)
- func (this *Netmgr) GetConnect(connectID ConnectID) Connecter
- func (this *Netmgr) GetListen(listenID ListenID) Listener
- func (this *Netmgr) Status() *Status
- func (this *Netmgr) Stop()
- type Publish
- type Sessioner
- type Status
- type TCPConnect
- type TCPListen
- type TCPSession
- func (this *TCPSession) GetOwner() any
- func (this *TCPSession) LocalAddr() net.Addr
- func (this *TCPSession) RemoteAddr() net.Addr
- func (this *TCPSession) Send(message any)
- func (this *TCPSession) SetCodec(codec ...Codec)
- func (this *TCPSession) SetOwner(owner any)
- func (this *TCPSession) SetPublish(publish ...Publish)
- func (this *TCPSession) SetWrong(wrong ...Wrong)
- func (this *TCPSession) Start(bind Bind, unbind Unbind)
- func (this *TCPSession) Stop()
- func (this *TCPSession) StopWait()
- type Unbind
- type Wrong
Constants ¶
View Source
const ( HeaderSize = 2 // 標頭長度 PacketSize = int(^uint16(0)) // 封包長度 ChannelSize = 1000 // 訊息通道大小設為1000, 避免因為爆滿而卡住 )
View Source
const ( EventStart = "start" // 啟動會話事件, 當會話啟動後觸發, 參數是會話物件 EventStop = "stop" // 停止會話事件, 當會話停止後觸發, 參數是會話物件 EventRecv = "recv" // 接收訊息事件, 當接收訊息後觸發, 參數是訊息物件 EventSend = "send" // 傳送訊息事件, 當傳送訊息後觸發, 參數是訊息物件 )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Codec ¶ added in v1.1.0
type Codec interface { // Encode 編碼處理 Encode(input any) (output any, err error) // Decode 解碼處理 Decode(input any) (output any, err error) }
Codec 編碼/解碼介面
type Connecter ¶
type Connecter interface { // Connect 啟動連接 Connect(bind Bind, unbind Unbind, wrong Wrong) // Address 取得位址 Address() string }
Connecter 連接介面
type Listener ¶
type Listener interface { // Listen 啟動接聽 Listen(bind Bind, unbind Unbind, wrong Wrong) // Stop 停止接聽 Stop() error // Address 取得位址 Address() string }
Listener 接聽介面
type Netmgr ¶
type Netmgr struct {
// contains filtered or unexported fields
}
Netmgr 網路管理器, 用於管理接聽或是連接, 以及使用中的會話, 但是會話不開放給外部使用
當新增連接時, 使用者須提供以下參數
- timeout: 連接超時時間, 連接若超過此時間會連接失敗
- bind: 連接成功時要執行的初始化流程
- unbind: 中斷連接時要執行的釋放流程
- wrong: 錯誤處理函式
Bind 通常要做的流程如下
- 建立實體
- 實體設置
- 模組設置
- 處理設置
- 會話設置(設定發布事件處理, 錯誤處理, 編碼/解碼, 擁有者)
- 實體初始化
- 標籤設置
- 錯誤處理
Unbind 通常要做的流程如下
- 釋放實體
- 刪除實體
- 刪除標籤
func (*Netmgr) AddConnectTCP ¶
func (this *Netmgr) AddConnectTCP(ip, port string, timeout time.Duration, bind Bind, unbind Unbind, wrong Wrong) ConnectID
AddConnectTCP 新增連接(TCP)
func (*Netmgr) AddListenTCP ¶
AddListenTCP 新增接聽(TCP)
func (*Netmgr) GetConnect ¶
GetConnect 取得連接
type Sessioner ¶
type Sessioner interface { // Start 啟動會話, 若不是使用多執行緒啟動, 則一定被阻塞在這裡直到停止會話; 當由連接器/接聽器獲得會話器之後, 需要啟動會話才可以傳送或接收封包 Start(bind Bind, unbind Unbind) // Stop 停止會話, 不會等待會話內部循環結束 Stop() // StopWait 停止會話, 會等待會話內部循環結束 StopWait() // SetPublish 設定發布事件處理 SetPublish(publish ...Publish) // SetWrong 設定錯誤處理 SetWrong(wrong ...Wrong) // SetCodec 設定編碼/解碼 SetCodec(codec ...Codec) // SetOwner 設定擁有者 SetOwner(owner any) // Send 傳送封包 Send(message any) // RemoteAddr 取得遠端位址 RemoteAddr() net.Addr // LocalAddr 取得本地位址 LocalAddr() net.Addr // GetOwner 取得擁有者 GetOwner() any }
Sessioner 會話介面
type TCPConnect ¶
type TCPConnect struct {
// contains filtered or unexported fields
}
TCPConnect TCP連接器, 負責用TCP協議建立連接以取得會話物件
func NewTCPConnect ¶
func NewTCPConnect(ip, port string, timeout time.Duration) *TCPConnect
NewTCPConnect 建立TCP連接器
type TCPListen ¶
type TCPListen struct {
// contains filtered or unexported fields
}
TCPListen TCP接聽器, 負責用TCP協議建立接聽, 並等待客戶端連接以取得會話物件
type TCPSession ¶
type TCPSession struct {
// contains filtered or unexported fields
}
TCPSession TCP會話器, 負責傳送/接收訊息等相關的功能
func (*TCPSession) SetCodec ¶ added in v1.1.0
func (this *TCPSession) SetCodec(codec ...Codec)
SetCodec 設定編碼/解碼
func (*TCPSession) SetPublish ¶ added in v1.1.0
func (this *TCPSession) SetPublish(publish ...Publish)
SetPublish 設定發布事件處理
func (*TCPSession) SetWrong ¶ added in v1.1.0
func (this *TCPSession) SetWrong(wrong ...Wrong)
SetWrong 設定錯誤處理
Click to show internal directories.
Click to hide internal directories.