iOS基于SRWebSocket和ProtocolBuffer集成即時聊天-----Protocol Buffer的集成

前些天公司有一個需求,基于WebSocket和Protocol Buffer實現(xiàn)即時通訊工具,這期間遇到一些問題缘薛,覺得網(wǎng)上的資料不是特別的詳細(xì),或者不是很好理解卡睦,所以在這里總結(jié)一下宴胧。先附上demo地址https://github.com/WJSugar/Chat,大佬如果覺得有幫助小手一抖給個星表锻,發(fā)現(xiàn)錯誤恕齐,請在留言嚴(yán)厲批評。

綜述

所謂基于WebSocket和Protocol Buffer實現(xiàn)即時通訊工具瞬逊,其實沒有很復(fù)雜显歧,WebSocket用來建立長連接,Protocol Buffer是傳輸消息的協(xié)議确镊。倘若你們公司要使用這種方式實現(xiàn)及時通信士骤,你的后臺會在服務(wù)器上部署好聊天服務(wù)器,并且給你一個.proto文件骚腥,我們iOS端需要在本地利用谷歌提供的工具生成.pbobjc.h和.pbobjc.m文件敦间,生成過程在后面文章中,這個可以看做聊天的消息實體束铭,例如廓块,后臺給你的是ChatMsg.proto,我們需要生成只有的文件名稱為ChatMsg.pbobjc.h和ChatMsg.pbobjc.m契沫,不要問我為什么是這樣的带猴,因為我也不知道啊。生成的這個ChatMsg就是我們以后的利用scoket收發(fā)消息的協(xié)議的具體實現(xiàn)懈万,以后的登錄拴清、新建聊天分組、獲取聊天分組等操作都是生成ChatMsg對象并配置相應(yīng)的參數(shù)会通,即可實現(xiàn)口予。

生成實體消息實體類

一步一步來,聽指揮涕侈,打勝仗沪停,這部分的操作是搭建編譯環(huán)境,后臺給你的.proto需要通過該編譯才能生成.h和.m這對文件裳涛,所以我們首先需要做的是搭建編譯環(huán)境

1.安裝HOMEBREW木张,如果已經(jīng)安裝過了就直接跳過這一步,如果沒有安裝過直接在終端執(zhí)行? /usr/bin/ruby-e"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2.去git下載Protol Buffer安裝包https://github.com/google/protobuf/releases端三,詢問后臺使用的版本舷礼,下載tar.gz,并解壓郊闯,這里以當(dāng)期最新版本為例3.5.1版本妻献。

3.打開終端并輸入,brew install autoconf automake libtool curl

4.在終端团赁,cd拖入protobuf-objectivec-3.5.1文件

5.輸入./autogen.sh,運行腳本旋奢,如果很長時間終端沒有反應(yīng)或者報錯,那說明需要翻? 越 長 城了

6.輸入./configure,運行腳本

7.輸入make,編譯

8.輸入make check,檢查依賴包是否完整然痊,終端會輸出7個檢查項至朗,都顯示pass就說明是沒有問題的

9.輸入make install,安裝PB

10.輸入proto --version輸出版本信息剧浸,并沒有其他錯誤提示锹引,就說明已經(jīng)安裝完畢啦。

下面要做的才是真正的生成消息實體文件

1.新建一個文件夾唆香,將后臺給你的.proto拷到文件夾嫌变,cd到這個文件夾

2.在終端輸入touch ChatMsg.proto命令,后臺給你的文件是啥你就輸入啥 touch 你的文件的名城.proto

3.在終端輸入protoc --plugin=/usr/local/bin/protoc-gen-objc ChatMsg.proto --objc_out="./"躬它,這里也要注意將ChatMsg替換為你的文件名稱腾啥,如果提示無其他的異常,文件夾就會有生成的.h和.m文件

4.將生成的文件拖入到你的項目中,在工程target->Build Phrases->Compile Sources->給ChatMsg.pbobjc.m設(shè)置-fno-objc-arc倘待,完畢就可以使用啦疮跑。

在項目中集成

1.在上面protobuf-objectivec-3.5.1.tar.gz解壓包里面,有一個objectivec文件夾凸舵,將這個文件夾復(fù)制到項目中祖娘,在項目中右鍵Add Files to xxx 選中這個文件夾,選擇文件夾中的ProtocolBuffers_iOS.xcodeproj添加到文件中啊奄。

2.在工程target->Build Phrases->Compile Sources->Link Binary With Libraries添加libTestSingleSourceBuild.a靜態(tài)庫

3.在工程target->Build Settings->?Rez Search Path?設(shè)置$(PROJECT)/objectivec渐苏,注意是objectivec是我存放ProtocolBuffers_iOS.xcodeproj的文件夾名字,根據(jù)你自己的文件夾名稱進(jìn)行配置$(PROJECT)/你的文件夾名稱

4.在工程target->Build Settings->?Header Search Paths?設(shè)置$(PROJECT)/objectivec菇夸,注意是objectivec是我存放ProtocolBuffers_iOS.xcodeproj的文件夾名字琼富,根據(jù)你自己的文件夾名稱進(jìn)行配置$(PROJECT)/你的文件夾名稱

編譯程序,順利通過編譯即可庄新。如果出現(xiàn)'GPBProtocolBuffers_RuntimeSupport.h' file not found'等文件找不到的問題鞠眉?重復(fù)“在項目中集成”步驟。

提示:集成完畢后摄咆,最好提前進(jìn)行打包測試凡蚜,因為引入后,打包會進(jìn)行一些的配置

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吭从,一起剝皮案震驚了整個濱河市朝蜘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌涩金,老刑警劉巖谱醇,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異步做,居然都是意外死亡副渴,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進(jìn)店門全度,熙熙樓的掌柜王于貴愁眉苦臉地迎上來煮剧,“玉大人,你說我怎么就攤上這事将鸵∶阒眩” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵顶掉,是天一觀的道長草娜。 經(jīng)常有香客問我,道長痒筒,這世上最難降的妖魔是什么宰闰? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任茬贵,我火速辦了婚禮,結(jié)果婚禮上移袍,老公的妹妹穿的比我還像新娘解藻。我一直安慰自己,他們只是感情好咐容,可當(dāng)我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布舆逃。 她就那樣靜靜地躺著蚂维,像睡著了一般戳粒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上虫啥,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天蔚约,我揣著相機(jī)與錄音,去河邊找鬼涂籽。 笑死苹祟,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的评雌。 我是一名探鬼主播树枫,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼景东!你這毒婦竟也來了砂轻?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤斤吐,失蹤者是張志新(化名)和其女友劉穎搔涝,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體和措,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡庄呈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了派阱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片诬留。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖贫母,靈堂內(nèi)的尸體忽然破棺而出文兑,到底是詐尸還是另有隱情,我是刑警寧澤颁独,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布彩届,位于F島的核電站,受9級特大地震影響誓酒,放射性物質(zhì)發(fā)生泄漏樟蠕。R本人自食惡果不足惜贮聂,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望寨辩。 院中可真熱鬧吓懈,春花似錦、人聲如沸靡狞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽甸怕。三九已至甘穿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間梢杭,已是汗流浹背温兼。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留武契,地道東北人募判。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像咒唆,于是被迫代替她去往敵國和親届垫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容