Documentation
¶
Index ¶
- Constants
- Variables
- type Client
- func (c *Client) Call(method string) *Request
- func (c *Client) Close() error
- func (c *Client) Connect() error
- func (c *Client) Off(event string) *Client
- func (c *Client) On(event string, handler func(*Event)) *Client
- func (c *Client) Reconnect() error
- func (c *Client) Set(data map[string]interface{}) *Client
- func (c *Client) Subscribe(event string, channel string) error
- func (c *Client) Unsubscribe(event string, channel string) error
- type Error
- type Event
- type File
- type H
- type Option
- type Request
- func (r *Request) End() error
- func (r *Request) EndStruct(dest interface{}) error
- func (r *Request) Send(data interface{}) *Request
- func (r *Request) SendFile(file interface{}, fieldName ...string) *Request
- func (r *Request) SendFileChunks(file interface{}, fieldName ...string) *Request
- func (r *Request) SendFiles(files []interface{}, fieldName ...string) *Request
- type RequestOption
- type Response
Constants ¶
View Source
const ( // StatusError 表示有內部錯誤發生。 StatusError = -1000 // StatusFull 表示此請求無法被接受,因為額度已滿。例如:使用者加入了一個已滿的聊天室、好友清單已滿。 StatusFull = -1001 // StatusExists 表示請求的事物已經存在,例如:重複的使用者名稱、電子郵件地址。 StatusExists = -1002 // StatusInvalid 表示此請求格式不正確。 StatusInvalid = -1003 // StatusNotFound 表示找不到請求的資源。 StatusNotFound = -1004 // StatusNotAuthorized 表示使用者需要登入才能進行此請求。 StatusNotAuthorized = -1005 // StatusNoPermission 表示使用者已登入但沒有相關權限執行此請求。 StatusNoPermission = -1006 // StatusUnimplemented 表示此功能尚未實作完成。 StatusUnimplemented = -1007 // StatusTooManyRequests 表示使用者近期發送太多請求,需稍後再試。 StatusTooManyRequests = -1008 // StatusResourceExhausted 表示使用者可用的額度已耗盡。 StatusResourceExhausted = -1009 // StatusBusy 表示伺服器正繁忙無法進行執行請求。 StatusBusy = -1010 // StatusFileRetry 表示檔案區塊發生錯誤,需要重新上傳相同區塊。 StatusFileRetry = -1011 // StatusFileEmpty 表示上傳的檔案、區塊是空的。 StatusFileEmpty = -1012 // StatusFileTooLarge 表示檔案過大無法上傳。 StatusFileTooLarge = -1013 // StatusTimeout 表示這個請求費時過久導致逾期而被終止。 StatusTimeout = -1014 )
Variables ¶
View Source
var ( // ChunkSize 是預設的區塊分切基準位元組大小。 ChunkSize = mego.MB * 1 // Timeout 是預設的逾期秒數。 Timeout = time.Second * 15 // UploadTimeout 是每個區塊、所有檔案的上傳逾期秒數,`0` 表示無上限。 UploadTimeout = time.Second * 30 )
View Source
var ( // ErrChunkWithFiles 表示不能上傳區塊檔案同時夾帶其他檔案實體。 ErrChunkWithFiles = errors.New("mego: cannot send the file chunks with the file entities") // ErrTimeout 表示一個請求過久都沒有回應。 ErrTimeout = errors.New("mego: request timeout") // ErrClosed 表示正在使用一個已經關閉的連線。 ErrClosed = errors.New("mego: use of closed connection") // ErrSent 表示正在使用一個早已發送出去的請求。 ErrSent = errors.New("mego: use of sent request") // ErrSubscriptionRefused 表示欲訂閱的事件請求被拒。 ErrSubscriptionRefused = errors.New("mego: the event subscription was refused") // ErrAborted 表示請求已被終止。 ErrAborted = errors.New("mego: the request has been aborted") // ErrEmptyRequest 表示欲發送的請求是個 `nil`。 ErrEmptyRequest = errors.New("mego: the request is empty") )
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client struct {
// URL 是遠端 Mego 伺服器的網址。
URL string
// UUID 是此客戶端的獨立編號。
UUID string
// Option 是這個客戶端的設置選項。
Option *Option
// contains filtered or unexported fields
}
Client 是一個客戶z端。
func (*Client) Set ¶
Set 能夠將指定資料保存於遠端伺服器,避免每次請求都需傳遞相同資料供伺服端讀取。 由於資料保存在指定伺服器上,若使用負載平衡可能導致另一個伺服器找不到相關資料,因此使用負載平衡時請不要用上此方式。
type Error ¶
type Error struct {
// Code 是錯誤代號。
Code int `codec:"c" msgpack:"c"`
// Message 是人類可讀的簡略錯誤訊息。
Message string `codec:"m" msgpack:"m"`
// Data 是錯誤的詳細資料。基於 Message Pack 格式需要透過 `Bind` 映射到本地建構體。
Data []byte `codec:"d" msgpack:"d"`
}
Error 呈現了一個遠端所傳回的錯誤。
type Event ¶
type Event struct {
// Data 是事件所夾帶的資料。基於 Message Pack 格式需要透過 `Bind` 映射到本地建構體。
Data []byte
}
Event 呈現了一個接收到的事件。
type File ¶
type File struct {
// Binary 是檔案的二進制。
Binary []byte `codec:"b" msgpack:"b"`
// ID 是檔案編號,用於區塊組合。
ID int `codec:"i" msgpack:"i"`
// Parts 呈現區塊的分塊進度。索引 0 表示總共區塊數,索引 1 則是本區塊編號。
// 如果這個切片是空的表示此為實體檔案而非區塊。
Parts []int `codec:"p" msgpack:"p"`
// Name 是檔案的原始名稱。
Name string `codec:"n" msgpack:"n"`
// contains filtered or unexported fields
}
File 呈現了一個欲上傳的檔案資料。
type Option ¶
type Option struct {
// ChunkSize 是預設的區塊分切基準位元組大小。
ChunkSize int
// Timeout 是預設的逾期秒數。
Timeout time.Duration
// UploadTimeout 是每個區塊、所有檔案的上傳逾期秒數,`0` 表示無上限。
UploadTimeout time.Duration
}
Option 呈現了一個客戶端的設置。
type Request ¶
type Request struct {
// Method 是欲呼叫的方法名稱。
Method string `codec:"m" msgpack:"m"`
// Params 是資料或參數。
Params interface{} `codec:"p" msgpack:"p"`
// Files 是此請求所包含的檔案欄位與其內容。
Files map[string][]*File `codec:"f" msgpack:"f"`
// ID 為本次請求編號,若無則為單次通知廣播不需回應。
ID int `codec:"i" msgpack:"i"`
// Option 是這個請求的選項設置。
Option *RequestOption
// contains filtered or unexported fields
}
Request 呈現了一個籲發送至遠端伺服器的請求。
func (*Request) SendFileChunks ¶
SendFileChunks 會保存稍後將以區塊方式上傳的檔案。 注意:請求使用區塊檔案上傳時,不可使用 `SendFile` 夾帶其他檔案。
type RequestOption ¶
type RequestOption struct {
// ChunkSize 是此請求區塊分切基準位元組大小,會取代原先的客戶端設置。
ChunkSize int
// Timeout 是此請求逾期的秒數,會取代原先的客戶端設置。
Timeout time.Duration
// UploadTimeout 是每個區塊、所有檔案的上傳逾期秒數,`0` 表示無上限,會取代原先的客戶端設置。
UploadTimeout time.Duration
}
RequestOption 呈現了一個請求的設置。
type Response ¶
type Response struct {
// Event 是欲呼叫的客戶端事件名稱。
Event string `codec:"v" msgpack:"v"`
// Result 是正常回應時的資料酬載。
Result interface{} `codec:"r" msgpack:"r"`
// Error 是錯誤回應時的資料酬載,與 Result 兩者擇其一,不會同時使用。
Error Error `codec:"e" msgpack:"e"`
// ID 是當時發送此請求的編號,用以讓客戶端比對是哪個請求所造成的回應。
ID int `codec:"i" msgpack:"i"`
}
Click to show internal directories.
Click to hide internal directories.