為何要封裝:
便于其他共用一套WebSocket指令的項(xiàng)目使用,隱藏wss消息的通訊.
Starscream源碼在此,可以使用Carthage集成到項(xiàng)目中.
示例:(本人封裝的是一套機(jī)器人通過服務(wù)器轉(zhuǎn)發(fā)指令給客戶端的場景):
核心類是MDManager類,包括:
單例對象,用于連接Socket的一些必要的key和證書設(shè)置.
CreateRobot方法,用于創(chuàng)建一個(gè)MDRobot單例
接下來就是包括所有連接及接收數(shù)據(jù)的管理類MDRobot:
下圖包括了一個(gè)delegate,這個(gè)接下來會講到;
接下來就是一些客戶端主動(dòng)發(fā)給服務(wù)器的一些指令:
connect內(nèi)部實(shí)現(xiàn)了Starscream的閉包socket.onconnect和ondisconnect這些指令,在連接成功后我們發(fā)送了服務(wù)器規(guī)定的心跳數(shù)據(jù),并且做了丟失處理,此處每發(fā)一次心跳則給心跳計(jì)數(shù)+1,然后在onData中每收到一次心跳回包則給心跳計(jì)數(shù)歸零.
onData中包含了對接收到數(shù)據(jù)的處理每一種數(shù)據(jù)對應(yīng)一個(gè)代理方法.
這樣我們就可以在想觀察指令的位置實(shí)現(xiàn)代理,發(fā)送指令就可以收到對應(yīng)的指令的代理方法了.(待完善加入Rxswift監(jiān)聽代理)