前言
這是我的畢業(yè)設(shè)計(jì)。
剛開(kāi)始確定這個(gè)課題的時(shí)候是因?yàn)橐郧坝猩晕⒀芯窟^(guò)一些XMPP協(xié)議,在這個(gè)基礎(chǔ)上做起來(lái)應(yīng)該不難。然后開(kāi)始選技術(shù)的時(shí)候還有半年,我想為什么不從更底層做起呢!那就不用XMPP,當(dāng)時(shí)接觸過(guò)相關(guān)的即時(shí)通訊技術(shù)還有WebSocket,那為什么直接從更底層的Socket開(kāi)始封裝呢
服務(wù)端就用Go語(yǔ)言吧,用來(lái)做IM服務(wù)器和HTTP服務(wù)器都很好。
技術(shù)選型
既然是基于Socket,iOS端我并不準(zhǔn)備中C語(yǔ)言的Socket開(kāi)發(fā)封裝起,而是使用一個(gè)第三方庫(kù)CocoaAsyncSocket。XMPP的iOS framework也是從這個(gè)庫(kù)開(kāi)始封裝。而Go語(yǔ)言的IM服務(wù)端則直接使用原生開(kāi)發(fā)即可,無(wú)論是UDP還是TCP都已經(jīng)封裝的很好。
HTTP服務(wù)器使用的框架是Gin,已經(jīng)相當(dāng)成熟,可以用于大型服務(wù)端的開(kāi)發(fā)了。
關(guān)于傳輸?shù)臄?shù)據(jù)格式,XMPP使用的是XML,但是體積太大,冗余過(guò)多不必要的數(shù)據(jù),考慮了很久好像也沒(méi)必要自己封裝二進(jìn)制的數(shù)據(jù)格式,我用的是Google的protocol buffer。HTTP服務(wù)器還是使用JSON。
我還需要存儲(chǔ)客戶端的IP地址,由于需要快速讀寫(xiě),我使用的是
延伸閱讀
學(xué)習(xí)是年輕人改變自己的最好方式