Socket.io

簡單的使用不一一贅述了廷没,其他的博主都已經(jīng)介紹很多了,在此我就記錄一下自己接入socket.io時(shí)的想法和bug吆鹤。

想法:

1丛肮、APP進(jìn)入后臺(tái)之后,將所有的event都刪除了涡驮;然后再喚醒的時(shí)候暗甥,再把所有的event都添加上。

manager里用字典對(duì)將所有的event和emit需要的參數(shù) 都保存了捉捅。這樣才能保證在喚醒之后撤防,能獲取所有的event。

2锯梁、監(jiān)聽連接狀態(tài)即碗,在連接成功之后,再執(zhí)行上述(1)操作陌凳。


bug:

1剥懒、emit時(shí)候,api的入?yún)⑹莂rray類型的合敦。而后端可能需要的是字典初橘。

只需要將字典用數(shù)組包一下就可以了,也即是字典是數(shù)組的第一個(gè)元素充岛。

2保檐、ack,官方git上是emitWithAck:with:timingOutAfter:callback:? ?但是API里面并沒有此API


用ack接收一下

3崔梗、監(jiān)聽連接狀態(tài)夜只,用KVO一直不觸發(fā)監(jiān)聽。

官方有提供監(jiān)聽鏈接狀態(tài)的event


監(jiān)聽連接狀態(tài)改變

4蒜魄、disconnect不發(fā)揮作用扔亥。

將socket(SocketIOClient)? disconnect即可场躯。

5、socket.io的自動(dòng)重連旅挤,但是過一會(huì)兒就會(huì)收不到推過來的數(shù)據(jù)踢关,但是心跳還在。

后端用的是netty-socketo三方庫粘茄,而iOS端官方的庫不知道是寫的有問題签舞,還是跟后端的不兼容。

bug出現(xiàn)原因柒瓣,雖然重連前后的sid是一致的儒搭,但是此時(shí)對(duì)后端來說已經(jīng)是兩個(gè)會(huì)話了。當(dāng)后端接收不到斷開前回會(huì)話的心跳嘹朗,后端超時(shí)师妙,就不會(huì)在向此sid的會(huì)話推數(shù)據(jù),而此時(shí)兩次會(huì)話的sid是一致的屹培,所有就收不到數(shù)據(jù)了默穴。至于iOS客戶端的心跳還在,只是說明會(huì)話還在褪秀,但是后端不推了蓄诽。
bug解決,后端設(shè)置config.setRandomSession(true).

6媒吗、一個(gè)接口仑氛,后端會(huì)同時(shí)推多次數(shù)據(jù)。

bug出現(xiàn)原因闸英,因?yàn)閏lient的handlers里面有多個(gè)handle(同一event)锯岖,所以在收到數(shù)據(jù)的時(shí)候,根據(jù)handles找到了多個(gè)handle甫何。

bug解決出吹,1、在on之前辙喂,先執(zhí)行off捶牢。2、修改源碼巍耗,在handles去重秋麸。我是這么做的,如圖

修改pod的三方庫之后炬太,記得clean一下灸蟆,再run

7、ack收到亂碼亲族。

bug出現(xiàn)原因次乓,因?yàn)閡tf8編碼問題吓歇。iOS13棄用了doubleEncodUtf8,socket.io在2.0版本(此版本不是pod search到的版本)票腰,也棄用了。而后端女气、安卓等都是1.0杏慰。所以有些不兼容,不知道是該開心炼鞠,還是該不開心缘滥。

bug解決,

①下載 V 9.x版本(10.0.0以上(包含)的是socket.io2.0谒主,以下的socket.io1.0)朝扼。注意:pods上的V9.x版本是swift3語音,有點(diǎn)舊霎肯。但是git上有個(gè)1.0-swift4分支擎颖。如果你在swift4環(huán)境下,項(xiàng)目bulid沒問題观游,那么可以考慮這個(gè)搂捧。

②這個(gè)是不是方法的方法,因?yàn)槲翼?xiàng)目中有別的三方需要swift5懂缕,所以不能用第一種方法允跑。我遇到的問題,是接收到ack回調(diào)的時(shí)候亂碼搪柑,別的時(shí)候不會(huì)出現(xiàn)聋丝,所以我麻煩后端的同事在接到ack事件的時(shí)候,同時(shí)再執(zhí)行一下on的回調(diào)工碾。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末弱睦,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子倚喂,更是在濱河造成了極大的恐慌每篷,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件端圈,死亡現(xiàn)場(chǎng)離奇詭異焦读,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)舱权,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門矗晃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人宴倍,你說我怎么就攤上這事张症〔旨迹” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵俗他,是天一觀的道長脖捻。 經(jīng)常有香客問我,道長兆衅,這世上最難降的妖魔是什么地沮? 我笑而不...
    開封第一講書人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮羡亩,結(jié)果婚禮上摩疑,老公的妹妹穿的比我還像新娘。我一直安慰自己畏铆,他們只是感情好雷袋,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著辞居,像睡著了一般楷怒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上速侈,一...
    開封第一講書人閱讀 49,741評(píng)論 1 289
  • 那天率寡,我揣著相機(jī)與錄音,去河邊找鬼倚搬。 笑死冶共,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的每界。 我是一名探鬼主播捅僵,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼眨层!你這毒婦竟也來了庙楚?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤趴樱,失蹤者是張志新(化名)和其女友劉穎馒闷,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體叁征,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纳账,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了捺疼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疏虫。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出呢袱,到底是詐尸還是另有隱情,我是刑警寧澤翅敌,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布羞福,位于F島的核電站,受9級(jí)特大地震影響哼御,放射性物質(zhì)發(fā)生泄漏坯临。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一恋昼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧赶促,春花似錦液肌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至婿滓,卻和暖如春老速,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背凸主。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來泰國打工橘券, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人卿吐。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓旁舰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親嗡官。 傳聞我的和親對(duì)象是個(gè)殘疾皇子箭窜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348