前言
這是我的畢業(yè)設(shè)計。
剛開始確定這個課題的時候是因為以前有稍微研究過一些XMPP協(xié)議,在這個基礎(chǔ)上做起來應(yīng)該不難。然后開始選技術(shù)的時候還有半年,我想為什么不從更底層做起呢!那就不用XMPP,當(dāng)時接觸過相關(guān)的即時通訊技術(shù)還有WebSocket,那為什么直接從更底層的Socket開始封裝呢
服務(wù)端就用Go語言吧,用來做IM服務(wù)器和HTTP服務(wù)器都很好。
技術(shù)選型
既然是基于Socket,iOS端我并不準(zhǔn)備中C語言的Socket開發(fā)封裝起,而是使用一個第三方庫CocoaAsyncSocket。XMPP的iOS framework也是從這個庫開始封裝。而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ù),考慮了很久好像也沒必要自己封裝二進制的數(shù)據(jù)格式,我用的是Google的protocol buffer。HTTP服務(wù)器還是使用JSON。
我還需要存儲客戶端的IP地址,由于需要快速讀寫,我使用的是
延伸閱讀
學(xué)習(xí)是年輕人改變自己的最好方式