英文文檔:https://godoc.org/github.com/eclipse/paho.mqtt.golang
github: https://github.com/eclipse/paho.mqtt.golang
Constants
const (
NET component = "[net] "
PNG component = "[pinger] "
CLI component = "[client] "
DEC component = "[decode] "
MES component = "[message] "
STR component = "[store] "
MID component = "[msgids] "
TST component = "[test] "
STA component = "[state] "
ERR component = "[error] "
)
調(diào)試輸出的組件名稱(chēng)
Variables
ErrInvalidQos是當(dāng)發(fā)送一個(gè)包的Qos值無(wú)效時(shí)返回的錯(cuò)誤
var ErrInvalidTopicEmptyString = errors.New("Invalid Topic; empty string")
ErrInvalidTopicEmptyString是傳遞長(zhǎng)度為0的主題字符串時(shí)返回的錯(cuò)誤
var ErrInvalidTopicMultilevel = errors.New("Invalid Topic; multi-level wildcard must be last level")
ErrInvalidTopicMultilevel是傳遞主題字符串時(shí)返回的錯(cuò)誤谎势,該字符串除最后一個(gè)位置外的任何位置都有多級(jí)通配符
ErrNotConnected是在客戶機(jī)未連接到代理時(shí)執(zhí)行的函數(shù)調(diào)用返回的錯(cuò)誤
func DefaultConnectionLostHandler
func DefaultConnectionLostHandler(client Client, reason error)
DefaultConnectionLostHandler是一個(gè)函數(shù)的定義骇陈,它只是向調(diào)試日志報(bào)告客戶機(jī)丟失連接的原因蝌箍。
type Client
// 判斷是否連接成功
IsConnected() bool
// 判斷是否與代理處于連接狀態(tài)
IsConnectionOpen() bool
// 創(chuàng)建一個(gè)連接到消息代理宪肖,如果失敗,默認(rèn)會(huì)重連x次
Connect() Token
// 等待指定的毫秒數(shù)以及等待現(xiàn)有工作完成之后脐区,斷開(kāi)連接
Disconnect(quiesce uint)
// 發(fā)布一個(gè)帶特定Qos標(biāo)識(shí)和內(nèi)容的消息給一個(gè)特定topic夺溢,返回一個(gè)Token用于跟蹤消息傳遞到代理的情況
Publish(topic string, qos byte, retained bool, payload interface{}) Token
// 訂閱一個(gè)主題,當(dāng)這個(gè)主題有消息時(shí)抢蚀,執(zhí)行消息處理函數(shù),如果為nil則進(jìn)行默認(rèn)處理
Subscribe(topic string, qos byte, callback MessageHandler) Token
// 可訂閱多個(gè)主題镰禾,當(dāng)其中一個(gè)主題來(lái)消息時(shí)皿曲,執(zhí)行消息處理函數(shù)唱逢,如果為空則進(jìn)行默認(rèn)處理
SubscribeMultiple(filters map[string] byte, callback MessageHandler) Token
// 取消訂閱將會(huì)結(jié)束接收從別的client發(fā)行過(guò)來(lái)的消息
Unsubscribe(topics ...string) Token
// 允許為一個(gè)沒(méi)有訂閱的topic添加一個(gè)消息處理函數(shù)
AddRoute(topic string, callback MessageHandler)
// 返回一個(gè)正在使用的client端的選項(xiàng)
OptionsReader() ClientOptionsReader
}
客戶端是這個(gè)庫(kù)使用的客戶端的接口定義,該接口主要用于允許模擬測(cè)試屋休。應(yīng)用程序可以使用以下方法連接到MQTT服務(wù)器:
A plain TCP socket
A secure SSL/TLS socket
A websocket
要在MQTT規(guī)范中描述的服務(wù)質(zhì)量級(jí)別上確保消息交付坞古,必須使用消息持久性機(jī)制。這是通過(guò)提供一個(gè)實(shí)現(xiàn)Store接口的類(lèi)型來(lái)實(shí)現(xiàn)的劫樟。為了方便起見(jiàn)痪枫,F(xiàn)ileStore和MemoryStore提供的實(shí)現(xiàn)應(yīng)該足以滿足大多數(shù)用例。更多信息可以在他們各自的文檔中找到叠艳∧坛拢可以通過(guò)配置a然后提供ClientOptions類(lèi)型來(lái)指定許多連接選項(xiàng)。
func NewClient
func NewClient(o *ClientOptions) Client
NewClient將使用提供的ClientOptions中指定的所有選項(xiàng)創(chuàng)建MQTT客戶端附较〕粤#客戶端必須在使用Connect方法之前調(diào)用該方法。這是為了確保在應(yīng)用程序?qū)嶋H準(zhǔn)備好之前創(chuàng)建資源(比如網(wǎng)絡(luò)連接)拒课。
type ClientOptions
type ClientOptions struct {
Servers []*url.URL
ClientID string
Username string
Password string
CredentialsProvider CredentialsProvider
CleanSession bool
Order bool
WillEnabled bool
WillTopic string
WillPayload []byte
WillQos byte
WillRetained bool
ProtocolVersion uint
TLSConfig *tls.Config
KeepAlive int64
PingTimeout time.Duration
ConnectTimeout time.Duration
MaxReconnectInterval time.Duration
AutoReconnect bool
Store Store
DefaultPublishHandler MessageHandler
OnConnect OnConnectHandler
OnConnectionLost ConnectionLostHandler
WriteTimeout time.Duration
MessageChannelDepth uint
ResumeSubs bool
HTTPHeaders http.Header
// contains filtered or unexported fields
}
ClientOptions包含客戶機(jī)的可配置選項(xiàng)徐勃。
func NewClientOptions
func NewClientOptions() *ClientOptions
創(chuàng)建一個(gè)帶有一些默認(rèn)值的新ClientClientOptions類(lèi)型。
Port: 1883
CleanSession: True
Order: True
KeepAlive: 30 (seconds)
ConnectTimeout: 30 (seconds)
MaxReconnectInterval 10 (minutes)
AutoReconnect: True
func (*ClientOptions) AddBroker
func (o *ClientOptions) AddBroker(server string) *ClientOptions
AddBroker將代理URI添加到要使用的代理列表中早像。格式應(yīng)該是scheme://host:port疏旨,其中“scheme”是“tcp”、“ssl”或“ws”之一扎酷,“host”是ip地址(或主機(jī)名),“port”是代理接受連接的端口遏匆。默認(rèn)是tcp://127.0.0.1
func (*ClientOptions) SetAutoReconnect
func (o *ClientOptions) SetAutoReconnect(a bool) *ClientOptions</pre>
SetAutoReconnect設(shè)置當(dāng)連接丟失時(shí)是否應(yīng)該使用自動(dòng)重連接邏輯法挨,即使禁用了ConnectionLostHandler仍然被調(diào)用
func (*ClientOptions) SetBinaryWill
func (o *ClientOptions) SetBinaryWill(topic string, payload []byte, qos byte, retained bool) *ClientOptions
SetBinaryWill接受一個(gè)將要設(shè)置的[]字節(jié)的will消息。當(dāng)客戶端連接時(shí)幅聘,它將把這個(gè)will消息發(fā)送給代理凡纳,代理將把所提供的有效負(fù)載(will)發(fā)布給訂閱了所提供主題的任何客戶端。
func (*ClientOptions) SetCleanSession
func (o *ClientOptions) SetCleanSession(clean bool) *ClientOptions
設(shè)置清除session標(biāo)志帝蒿,當(dāng)設(shè)置清除標(biāo)志時(shí)荐糜,代理不會(huì)存儲(chǔ)你發(fā)送的消息,將會(huì)直接轉(zhuǎn)發(fā)給對(duì)應(yīng)的topic
func (*ClientOptions) SetClientID
func (o *ClientOptions) SetClientID(id string) *ClientOptions
SetClientID將設(shè)置客戶機(jī)id葛超,以便在連接到MQTT代理時(shí)由該客戶機(jī)使用暴氏。根據(jù)MQTT 規(guī)范,客戶機(jī)id必須不超過(guò)23個(gè)字符绣张。
func (*ClientOptions) SetConnectTimeout
func (o *ClientOptions) SetConnectTimeout(t time.Duration) *ClientOptions/pre>
SetConnectTimeout限制了客戶機(jī)在超時(shí)并錯(cuò)誤嘗試之前嘗試打開(kāi)到MQTT服務(wù)器的連接時(shí)等待的時(shí)間答渔。0的持續(xù)時(shí)間不會(huì)超時(shí)。默認(rèn)30秒侥涵。目前只能在TCP/TLS連接上運(yùn)行沼撕。
func (*ClientOptions) SetConnectionLostHandler
func (o *ClientOptions) SetConnectionLostHandler(onLost ConnectionLostHandler) *ClientOptions</pre>
SetConnectionLostHandler將設(shè)置OnConnectionLost回調(diào)函數(shù)宋雏,以便在客戶機(jī)意外丟失與MQTT代理的連接時(shí)執(zhí)行。
func (*ClientOptions) SetCredentialsProvider
func (o *ClientOptions) SetCredentialsProvider(p CredentialsProvider) *ClientOptions
SetCredentialsProvider將設(shè)置此客戶機(jī)在連接到提供當(dāng)前用戶名和密碼的MQTT代理時(shí)要調(diào)用的方法务豺。注意:如果不使用SSL/TLS磨总,此信息將以明文形式通過(guò)網(wǎng)絡(luò)發(fā)送。
func (*ClientOptions) SetDefaultPublishHandler
func (o *ClientOptions) SetDefaultPublishHandler(defaultHandler MessageHandler) *ClientOptions
SetDefaultPublishHandler設(shè)置當(dāng)接收到不匹配任何已知訂閱的消息時(shí)將調(diào)用的MessageHandler笼沥。
func (*ClientOptions) SetHTTPHeaders
func (o *ClientOptions) SetHTTPHeaders(h http.Header) *ClientOptions
SetHTTPHeaders設(shè)置將在WebSocket打開(kāi)握手中發(fā)送的附加HTTP頭蚪燕。
func (*ClientOptions) SetKeepAlive
func (o *ClientOptions) SetKeepAlive(k time.Duration) *ClientOptions
SetKeepAlive將設(shè)置客戶機(jī)在向代理發(fā)送PING請(qǐng)求之前應(yīng)該等待的時(shí)間(以秒為單位)村视。這將允許客戶端知道與服務(wù)器的連接沒(méi)有丟失考廉。
func (*ClientOptions) SetMaxReconnectInterval
func (o *ClientOptions) SetMaxReconnectInterval(t time.Duration) *ClientOptions
SetMaxReconnectInterval設(shè)置連接丟失時(shí)设哗,在重新連接嘗試之間等待的最大時(shí)間
func (*ClientOptions) SetMessageChannelDepth
func (o *ClientOptions) SetMessageChannelDepth(s uint) *ClientOptions
SetMessageChannelDepth設(shè)置在客戶端暫時(shí)脫機(jī)時(shí)保存消息的內(nèi)部隊(duì)列的大小屋群,允許應(yīng)用程序在客戶端重新連接時(shí)發(fā)布消息公浪。此設(shè)置僅在AutoReconnect設(shè)置為true時(shí)有效屁商,否則將忽略該設(shè)置额湘。
func (*ClientOptions) SetOnConnectHandler
func (o *ClientOptions) SetOnConnectHandler(onConn OnConnectHandler) *ClientOptions
SetOnConnectHandler設(shè)置客戶機(jī)連接時(shí)要調(diào)用的函數(shù)削解。無(wú)論是在初始連接時(shí)還是在自動(dòng)重新連接時(shí)营勤。
func (*ClientOptions) SetOrderMatters
func (o *ClientOptions) SetOrderMatters(order bool) *ClientOptions
SetOrderMatters將設(shè)置消息路由以保證每個(gè)QoS級(jí)別中的順序灵嫌。默認(rèn)情況下,該值為true葛作。如果設(shè)置為false寿羞,則此標(biāo)志指示消息可以異步地從客戶機(jī)傳遞到應(yīng)用程序,并且可能出現(xiàn)錯(cuò)誤赂蠢。
func (*ClientOptions) SetPassword
func (o *ClientOptions) SetPassword(p string) *ClientOptions
SetPassword將設(shè)置此客戶機(jī)在連接到MQTT代理時(shí)使用的密碼绪穆。注意:如果不使用SSL/TLS,此信息將以明文形式通過(guò)網(wǎng)絡(luò)發(fā)送虱岂。
func (*ClientOptions) SetPingTimeout
func (o *ClientOptions) SetPingTimeout(k time.Duration) *ClientOptions
SetPingTimeout將設(shè)置客戶機(jī)在向代理發(fā)送PING請(qǐng)求之后等待的時(shí)間(以秒為單位)玖院,然后再?zèng)Q定連接是否已經(jīng)丟失。默認(rèn)為10秒第岖。
func (*ClientOptions) SetProtocolVersion
func (o *ClientOptions) SetProtocolVersion(pv uint) *ClientOptions
SetProtocolVersion設(shè)置用于連接到代理的MQTT版本难菌。當(dāng)前合法值為3 - MQTT 3.1或4 - MQTT 3.1.1
func (*ClientOptions) SetResumeSubs
func (o *ClientOptions) SetResumeSubs(resume bool) *ClientOptions
SetResumeSubs將在連接時(shí)啟用已存儲(chǔ)(un)訂閱消息的恢復(fù)功能,但如果CleanSession為false蔑滓,則不會(huì)重新連接郊酒。否則這些消息將被丟棄。
func (*ClientOptions) SetStore
func (o *ClientOptions) SetStore(s Store) *ClientOptions
SetStore將設(shè)置用于在使用QoS級(jí)別qos_1或qos_2的情況下提供消息持久性的Store接口的實(shí)現(xiàn)键袱。如果沒(méi)有提供存儲(chǔ)燎窘,那么客戶端將默認(rèn)使用MemoryStore。
func (*ClientOptions) SetTLSConfig
func (o *ClientOptions) SetTLSConfig(t *tls.Config) *ClientOptions<
設(shè)置SSL/TLS配置蹄咖,以便在連接到MQTT代理時(shí)使用荠耽。
func (*ClientOptions) SetUsername
func (o *ClientOptions) SetUsername(u string) *ClientOptions
SetUsername將設(shè)置此客戶機(jī)在連接到MQTT代理時(shí)使用的用戶名。注意:如果不使用SSL/TLS比藻,此信息將以明文形式通過(guò)網(wǎng)絡(luò)發(fā)送铝量。
func (*ClientOptions) SetWill
func (o *ClientOptions) SetWill(topic string, payload string, qos byte, retained bool) *ClientOptions<
SetWill接受一個(gè)將要設(shè)置的字符串will消息倘屹。當(dāng)客戶端連接時(shí),它將把這個(gè)will消息發(fā)送給代理慢叨,代理將把提供的有效負(fù)載(will)發(fā)布給訂閱了提供主題的任何客戶端纽匙。
func (*ClientOptions) SetWriteTimeout
func (o *ClientOptions) SetWriteTimeout(t time.Duration) *ClientOptions
SetWriteTimeout限制mqtt發(fā)布應(yīng)該阻塞多長(zhǎng)時(shí)間,直到它釋放帶有超時(shí)錯(cuò)誤的阻塞為止拍谐。0的持續(xù)時(shí)間不會(huì)超時(shí)烛缔。默認(rèn)30秒
func (*ClientOptions) UnsetWill
func (o *ClientOptions) UnsetWill() *ClientOptions
UnsetWill將導(dǎo)致任何set will消息被忽略。
type ClientOptionsReader
type ClientOptionsReader struct {
// contains filtered or unexported fields
}
ClientOptionsReader提供了一個(gè)接口轩拨,用于在初始化客戶機(jī)之后讀取ClientOptions践瓷。
func (*ClientOptionsReader) AutoReconnect
func (r *ClientOptionsReader) AutoReconnect() bool
func (*ClientOptionsReader) CleanSession
func (r *ClientOptionsReader) CleanSession() bool
func (*ClientOptionsReader) ClientID
func (r *ClientOptionsReader) ClientID() string
func (*ClientOptionsReader) ConnectTimeout
func (r *ClientOptionsReader) ConnectTimeout() time.Duration
func (*ClientOptionsReader) HTTPHeaders
func (r *ClientOptionsReader) HTTPHeaders() http.Header
func (*ClientOptionsReader) KeepAlive
func (r *ClientOptionsReader) KeepAlive() time.Duration
func (*ClientOptionsReader) MaxReconnectInterval
func (r *ClientOptionsReader) MaxReconnectInterval() time.Duration
func (*ClientOptionsReader) MessageChannelDepth
func (r *ClientOptionsReader) MessageChannelDepth() uint
func (*ClientOptionsReader) Order
func (r *ClientOptionsReader) Order() bool
func (*ClientOptionsReader) Password
func (r *ClientOptionsReader) Password() string
func (*ClientOptionsReader) PingTimeout
func (r *ClientOptionsReader) PingTimeout() time.Duration
func (*ClientOptionsReader) ProtocolVersion
func (r *ClientOptionsReader) ProtocolVersion() uint
func (*ClientOptionsReader) ResumeSubs
func (r *ClientOptionsReader) ResumeSubs() bool
ResumeSubs返回true,如果已啟用了restore stored (un)sub
func (*ClientOptionsReader) Servers
func (r ClientOptionsReader) Servers() []url.URL
Servers返回clientoptions中定義的服務(wù)器的一部分
func (*ClientOptionsReader) TLSConfig
func (r *ClientOptionsReader) TLSConfig() *tls.Config
func (*ClientOptionsReader) Username
func (r *ClientOptionsReader) Username() string
func (*ClientOptionsReader) WillEnabled
func (r *ClientOptionsReader) WillEnabled() bool
func (*ClientOptionsReader) WillPayload
func (r *ClientOptionsReader) WillPayload() []byte
func (*ClientOptionsReader) WillQos
func (r *ClientOptionsReader) WillQos() byte
func (*ClientOptionsReader) WillRetained
func (r *ClientOptionsReader) WillRetained() bool
func (*ClientOptionsReader) WillTopic
func (r *ClientOptionsReader) WillTopic() string
func (*ClientOptionsReader) WriteTimeout
func (r *ClientOptionsReader) WriteTimeout() time.Duration
type ConnectToken
type ConnectToken struct {
// contains filtered or unexported fields
}
onnectToken是令牌的擴(kuò)展亡蓉,包含提供關(guān)于Connect()調(diào)用的信息所需的額外字段
func (*ConnectToken) Error
func (b *ConnectToken) Error() error
func (*ConnectToken) ReturnCode
func (c *ConnectToken) ReturnCode() byte
ReturnCode返回響應(yīng)Connect()而發(fā)送的connack中的acknowlegement代碼
func (*ConnectToken) SessionPresent
func (c *ConnectToken) SessionPresent() bool
SessionPresent返回一個(gè)bool晕翠,表示響應(yīng)Connect()發(fā)送的connack中會(huì)話present字段的值
func (*ConnectToken) Wait
func (b *ConnectToken) Wait() bool
Wait將無(wú)限期地等待令牌完成(從代理發(fā)送發(fā)布并確認(rèn)收據(jù))
func (*ConnectToken) WaitTimeout
等待超時(shí)需要時(shí)間。等待與令牌關(guān)聯(lián)的流完成的持續(xù)時(shí)間砍濒,如果在超時(shí)之前返回true淋肾,則返回true;如果超時(shí)發(fā)生,則返回false爸邢。在超時(shí)的情況下樊卓,令牌不會(huì)設(shè)置錯(cuò)誤,以防調(diào)用者希望再次等待
type ConnectionLostHandler
ConnectionLostHandler是一種回調(diào)類(lèi)型杠河,可以將其設(shè)置為在意外斷開(kāi)與MQTT代理的連接時(shí)執(zhí)行碌尔。調(diào)用Disconnect或ForceDisconnect導(dǎo)致的斷開(kāi)不會(huì)導(dǎo)致執(zhí)行OnConnectionLost回調(diào)。
type CredentialsProvider
type CredentialsProvider func() (username string, password string)
CredentialsProvider允許在重新連接之前更新用戶名和密碼券敌。它應(yīng)該返回當(dāng)前用戶名和密碼唾戚。
type DisconnectToken
type DisconnectToken struct {
// contains filtered or unexported fields
}
DisconnectToken是令牌的擴(kuò)展,包含提供有關(guān)調(diào)用Disconnect()的信息所需的額外字段
func (*DisconnectToken) Error
func (b *DisconnectToken) Error() error
func (*DisconnectToken) Wait
func (b *DisconnectToken) Wait() bool
Wait將無(wú)限期地等待令牌完成(從代理發(fā)送發(fā)布并確認(rèn)收據(jù))
func (*DisconnectToken) WaitTimeout
WaitTimeout takes a time.Duration to wait for the flow associated with the Token to complete, returns true if it returned before the timeout or returns false if the timeout occurred. In the case of a timeout the Token does not have an error set in case the caller wishes to wait again
type DummyToken
type DummyToken struct {
// contains filtered or unexported fields
}
func (*DummyToken) Error
func (d *DummyToken) Error() error
func (*DummyToken) Wait
func (d *DummyToken) Wait() bool
func (*DummyToken) WaitTimeout
func (d *DummyToken) WaitTimeout(t time.Duration) bool
type FileStore
type FileStore struct {
sync.RWMutex
// contains filtered or unexported fields
}
FileStore implements the store interface using the filesystem to provide true persistence, even across client failure. This is designed to use a single directory per running client. If you are running multiple clients on the same filesystem, you will need to be careful to specify unique store directories for each.
func NewFileStore
NewFileStore將創(chuàng)建一個(gè)新的FileStore陪白,該文件存儲(chǔ)在提供的目錄中。
func (*FileStore) All
All將提供與當(dāng)前駐留在文件存儲(chǔ)中的消息相關(guān)聯(lián)的所有鍵的列表膳灶。
func (*FileStore) Close
func (store *FileStore) Close()
關(guān)閉將不允許使用文件存儲(chǔ)咱士。
func (*FileStore) Del
Del將從文件存儲(chǔ)中刪除與提供的密鑰相關(guān)聯(lián)的持久消息。
func (*FileStore) Get
func (store *FileStore) Get(key string) packets.ControlPacket
Get將從存儲(chǔ)中檢索與提供的鍵值相關(guān)聯(lián)的消息轧钓。
func (*FileStore) Open
func (store *FileStore) Open()
打開(kāi)將允許使用文件存儲(chǔ)序厉。
func (*FileStore) Put
func (store *FileStore) Put(key string, m packets.ControlPacket)
Put將向存儲(chǔ)中放入一條與所提供的鍵值相關(guān)聯(lián)的消息。
func (*FileStore) Reset
func (store *FileStore) Reset()
重置將從文件存儲(chǔ)中刪除所有持久性消息毕箍。
type Logger
type Logger interface {
Println(v ...interface{})
Printf(format string, v ...interface{})
}
Logger接口允許實(shí)現(xiàn)向這個(gè)包提供任何實(shí)現(xiàn)其中定義的方法的對(duì)象弛房。
var (
ERROR Logger = NOOPLogger{}
CRITICAL Logger = NOOPLogger{}
WARN Logger = NOOPLogger{}
DEBUG Logger = NOOPLogger{}
)
庫(kù)輸出的內(nèi)部級(jí)別,初始化為不打印任何內(nèi)容而柑,但可以由程序員重寫(xiě)
type MId
type MId uint16
MId是MQTT規(guī)范指定的16位消息id文捶。通常荷逞,客戶機(jī)應(yīng)用程序不應(yīng)該依賴這些值。
type MemoryStore
type MemoryStore struct {
sync.RWMutex
// contains filtered or unexported fields
}
MemoryStore實(shí)現(xiàn)了store接口粹排,以提供完全存儲(chǔ)在內(nèi)存中的“持久性”機(jī)制种远。這只在客戶機(jī)實(shí)例存在時(shí)才有用。
func NewMemoryStore
func NewMemoryStore() *MemoryStore
NewMemoryStore返回指向MemoryStore新實(shí)例的指針顽耳,在調(diào)用Open()之前不會(huì)初始化該實(shí)例并準(zhǔn)備使用它坠敷。
func (*MemoryStore) All
func (store *MemoryStore) All() []string
All返回一個(gè)字符串片段,其中包含內(nèi)存存儲(chǔ)中當(dāng)前的所有鍵射富。
func (*MemoryStore) Close
func (store *MemoryStore) Close()
Close將不允許修改存儲(chǔ)的狀態(tài)膝迎。
func (*MemoryStore) Del
func (store *MemoryStore) Del(key string)
Del接受一個(gè)鍵,搜索MemoryStore胰耗,如果找到該鍵限次,則刪除與其關(guān)聯(lián)的消息指針。
func (*MemoryStore) Get
func (store *MemoryStore) Get(key string) packets.ControlPacket
Get接受一個(gè)鍵并在存儲(chǔ)中查找匹配的消息宪郊,該消息要么返回消息指針掂恕,要么返回nil。
func (*MemoryStore) Open
func (store *MemoryStore) Open()
Open初始化MemoryStore實(shí)例弛槐。
func (*MemoryStore) Put
func (store *MemoryStore) Put(key string, message packets.ControlPacket)<
Put接受指向消息的鍵和指針懊亡,并存儲(chǔ)消息。
func (*MemoryStore) Reset
func (store *MemoryStore) Reset()
重置消除存儲(chǔ)中的所有持久消息數(shù)據(jù)乎串。
type Message
type Message interface {
Duplicate() bool
Qos() byte
Retained() bool
Topic() string
MessageID() uint16
Payload() []byte
Ack()
}
Message定義了消息實(shí)現(xiàn)必須支持的外部店枣,這些外部是傳遞給回調(diào)的接收消息,而不是內(nèi)部消息
type MessageHandler
MessageHandler是一種回調(diào)類(lèi)型叹誉,可以將其設(shè)置為在發(fā)布到客戶端訂閱的主題的消息到達(dá)時(shí)執(zhí)行鸯两。
type NOOPLogger
type NOOPLogger struct{}
NOOPLogger實(shí)現(xiàn)了默認(rèn)情況下不執(zhí)行任何操作的日志記錄器。這允許我們有效地丟棄不需要的消息长豁。
func (NOOPLogger) Printf
func (NOOPLogger) Printf(format string, v ...interface{})
func (NOOPLogger) Println
func (NOOPLogger) Println(v ...interface{})
type OnConnectHandler
type OnConnectHandler func(Client)
OnConnectHandler是一個(gè)回調(diào)函數(shù)钧唐,當(dāng)客戶機(jī)狀態(tài)從未連接/斷開(kāi)連接更改為已連接時(shí),將調(diào)用該回調(diào)函數(shù)匠襟。無(wú)論是在初始連接還是在重新連接時(shí)
type PacketAndToken
type PacketAndToken struct {
// contains filtered or unexported fields
}
PacketAndToken是一個(gè)結(jié)構(gòu)體钝侠,它同時(shí)包含一個(gè)控制包和一個(gè)令牌。這個(gè)結(jié)構(gòu)通過(guò)客戶機(jī)接口代碼和負(fù)責(zé)發(fā)送和接收MQTT消息的底層代碼之間的通道傳遞酸舍。
type PublishToken
type PublishToken struct {
// contains filtered or unexported fields
}
PublishToken是令牌的擴(kuò)展帅韧,包含提供關(guān)于Publish()調(diào)用的信息所需的額外字段
func (*PublishToken) Error
func (b *PublishToken) Error() error
func (*PublishToken) MessageID
func (p *PublishToken) MessageID() uint16
MessageID返回發(fā)送給代理時(shí)分配給發(fā)布包的MQTT消息ID
func (*PublishToken) Wait
func (b *PublishToken) Wait() bool
Wait將無(wú)限期地等待令牌完成(從代理發(fā)送發(fā)布并確認(rèn)收據(jù))
func (*PublishToken) WaitTimeout
等待超時(shí)需要時(shí)間。等待與令牌關(guān)聯(lián)的流完成的持續(xù)時(shí)間啃勉,如果在超時(shí)之前返回true忽舟,則返回true;如果超時(shí)發(fā)生,則返回false。在超時(shí)的情況下叮阅,令牌不會(huì)設(shè)置錯(cuò)誤刁品,以防調(diào)用者希望再次等待
type Store
type Store interface {
Open()
Put(key string, message packets.ControlPacket)
Get(key string) packets.ControlPacket
All() []string
Del(key string)
Close()
Reset()
}
Store是一個(gè)接口,可用于提供消息持久性的實(shí)現(xiàn)帘饶。因?yàn)槲覀兛赡鼙仨毷褂孟嗤南D存儲(chǔ)不同的消息哑诊,所以我們需要為每個(gè)消息提供一個(gè)惟一的密鑰。這可以通過(guò)在每個(gè)消息id前加上“i.”或“o.”來(lái)實(shí)現(xiàn)
type SubscribeToken
type SubscribeToken struct {
// contains filtered or unexported fields
}
SubscribeToken是令牌的擴(kuò)展及刻,包含提供關(guān)于Subscribe()調(diào)用的信息所需的額外字段
func (*SubscribeToken) Error
func (b *SubscribeToken) Error() error</pre>
func (*SubscribeToken) Result
func (s *SubscribeToken) Result() map[string]byte
Result返回已訂閱主題的映射镀裤,以及來(lái)自代理的匹配返回代碼。這要么是訂閱的Qos值缴饭,要么是錯(cuò)誤代碼暑劝。
func (*SubscribeToken) Wait
func (b *SubscribeToken) Wait() bool
Wait將無(wú)限期地等待令牌完成(從代理發(fā)送發(fā)布并確認(rèn)收據(jù))
func (*SubscribeToken) WaitTimeout
等待超時(shí)需要時(shí)間。等待與令牌關(guān)聯(lián)的流完成的持續(xù)時(shí)間颗搂,如果在超時(shí)之前返回true担猛,則返回true;如果超時(shí)發(fā)生,則返回false丢氢。在超時(shí)的情況下傅联,令牌不會(huì)設(shè)置錯(cuò)誤,以防調(diào)用者希望再次等待
type Token
type Token interface {
Wait() bool
WaitTimeout(time.Duration) bool
Error() error
}
令牌定義用于指示操作何時(shí)完成的令牌的接口疚察。
type TokenErrorSetter
type TokenErrorSetter interface {
// contains filtered or unexported methods
}
type UnsubscribeToken
type UnsubscribeToken struct {
// contains filtered or unexported fields
}
UnsubscribeToken是令牌的擴(kuò)展蒸走,包含提供有關(guān)調(diào)用Unsubscribe()的信息所需的額外字段
func (*UnsubscribeToken) Error
func (b *UnsubscribeToken) Error() error
func (*UnsubscribeToken) Wait
func (b *UnsubscribeToken) Wait() bool
Wait將無(wú)限期地等待令牌完成(從代理發(fā)送發(fā)布并確認(rèn)收據(jù))
func (*UnsubscribeToken) WaitTimeout
func (b *UnsubscribeToken) WaitTimeout(d time.Duration) bool
等待超時(shí)需要時(shí)間。等待與令牌關(guān)聯(lián)的流完成的持續(xù)時(shí)間貌嫡,如果在超時(shí)之前返回true比驻,則返回true;如果超時(shí)發(fā)生,則返回false岛抄。在超時(shí)的情況下别惦,令牌不會(huì)設(shè)置錯(cuò)誤,以防調(diào)用者希望再次等待