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