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.