使用socketIO框架實(shí)現(xiàn)iOS的長連接

公司是做金融相關(guān)锌介,最近需要實(shí)現(xiàn)一個金融客戶端必不可少的東西:K線圖猾警。這個東西如果是自己從頭來搞,可真的不是一件簡單的事发皿,幸好,在這個領(lǐng)域有很多的先驅(qū)穴墅,已經(jīng)在我們之前造好了輪子等著我們使用,一直對這些樂于分享玄货,樂于開源的大神們抱有感激,希望有一天自己的知識和經(jīng)驗(yàn)也能對后來人有所幫助松捉。

說起K線圖,為了做好這個東西前期也已經(jīng)研究了很久隘世,最終找到了一份算是不錯的K線圖demo,地址在這里:https://github.com/WillkYang/YYStock丙者,
有興趣的可以去看看。但是這篇blog的重點(diǎn)不在K線圖上永票,而是如何實(shí)現(xiàn)長連接,讓服務(wù)端實(shí)時推送股票的相關(guān)信息給客戶端。長連接的技術(shù)我之前也是沒有接觸過侣集,這次一次研究了個爽,找了很多的開源第三方的礦框架编振,包括:CocoaAsyncSocket:https://github.com/robbiehanson/CocoaAsyncSocket
Facebook出品的SocketRocket https://github.com/facebook/SocketRocket踪央,
以及今天要說道的socket.io https://github.com/socketio/socket.io-client-swift瓢阴。
這三個可以實(shí)現(xiàn)長連接的框架,都很厲害荣恐,但是因?yàn)槲覀兊姆?wù)端是用socket.io實(shí)現(xiàn)的,所以我們客戶端使用socket.io相關(guān)的也就最容易實(shí)現(xiàn)叠穆。
最新的是Socket.IO-Client-Swift,一個swift實(shí)現(xiàn)的Socket.IO框架硼被,我們?nèi)绻褂胏ocopods的話,直接

pod 'Socket.IO-Client-Swift'

安裝好之后嚷硫,實(shí)現(xiàn)長連接就比較簡單了:
1)首先在你的viewController中引入這個第三方,

@import SocketIO;

注意是@而不是#import论巍,至于為何這樣寫請自行百度,這里就不贅述了嘉汰。
2)引入好了框架鞋怀,就開始連接

NSURL *url = [NSURL URLWithString:@"https://socketio-chat.now.sh/"];

//使用給定的url初始化一個socketIOClient持搜,后面的config是對這個socket的一些配置,比如log設(shè)置為YES葫盼,控制臺會打印連接時的日志等
SocketIOClient *socket = [[SocketIOClient alloc] initWithSocketURL:url config:@{@"log": @YES, @"forcePolling": @YES}];

    //監(jiān)聽是否連接上服務(wù)器,正確連接走后面的回調(diào)
    [socket on:@"connect" callback:^(NSArray* data, SocketAckEmitter* ack) {
        NSLog(@"socket connected");
        [socket emit:@"kline_day" with:@[@"430009"]];
    }];
    //監(jiān)聽new message抛猫,這是socketIO官網(wǎng)提供的一個測試用例,大家都可以試試闺金。如果成功連接,會收到data內(nèi)容败匹。
    [socket on:@"new message" callback:^(NSArray* data, SocketAckEmitter* ack) {
        NSLog(@"response is %@",data);
    }];
    [socket connect];

一般我們真正開發(fā)中,需要給服務(wù)端傳遞規(guī)定好的關(guān)鍵字掀亩,服務(wù)端才會正確的返回你想獲取的數(shù)據(jù),這個時候就要用到emmit()方法:

[socket emit:@"kline_day" with:@[@"430009"]];

上面的意思就是請求服務(wù)器430009這個股票代碼的日k數(shù)據(jù)捉蚤,一般我們將這個請求放在監(jiān)聽連接成功的方法中。
如果想停止本次長連接刹泄,也很簡單外里,只需要用上面創(chuàng)建的socket對象調(diào)用disconnect()方法即可。

[self.socket disconnect];

這樣一個長連接就成功了特石,之后就是解析獲取到的數(shù)據(jù)盅蝗,這個數(shù)據(jù)是每隔一定時間服務(wù)器自動推送的,我們是需要把這些數(shù)據(jù)展示在頁面上即可姆蘸。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末墩莫,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子逞敷,更是在濱河造成了極大的恐慌狂秦,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件推捐,死亡現(xiàn)場離奇詭異裂问,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)牛柒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門堪簿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人皮壁,你說我怎么就攤上這事椭更。” “怎么了蛾魄?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵虑瀑,是天一觀的道長湿滓。 經(jīng)常有香客問我叽奥,道長而线,這世上最難降的妖魔是什么恋日? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任誓竿,我火速辦了婚禮谈截,結(jié)果婚禮上簸喂,老公的妹妹穿的比我還像新娘喻鳄。我一直安慰自己除呵,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著泛豪,像睡著了一般诡曙。 火紅的嫁衣襯著肌膚如雪岗仑。 梳的紋絲不亂的頭發(fā)上荠雕,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天炸卑,我揣著相機(jī)與錄音盖文,去河邊找鬼五续。 笑死,一個胖子當(dāng)著我的面吹牛凶伙,可吹牛的內(nèi)容都是我干的函荣。 我是一名探鬼主播傻挂,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼金拒,長吁一口氣:“原來是場噩夢啊……” “哼殖蚕!你這毒婦竟也來了睦疫?” 一聲冷哼從身側(cè)響起蛤育,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤瓦糕,失蹤者是張志新(化名)和其女友劉穎咕娄,沒想到半個月后圣勒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了用含。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片耕餐。...
    茶點(diǎn)故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡夏跷,死狀恐怖槽华,靈堂內(nèi)的尸體忽然破棺而出猫态,到底是詐尸還是另有隱情亲雪,我是刑警寧澤疚膊,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站傀蚌,受9級特大地震影響善炫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜摸航,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望读串。 院中可真熱鬧恢暖,春花似錦杰捂、人聲如沸嫁佳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蔬充。三九已至,卻和暖如春肥败,著一層夾襖步出監(jiān)牢的瞬間馒稍,已是汗流浹背纽谒。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工央勒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留稳吮,地道東北人灶似。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓者甲,卻偏偏與公主長得像鲫懒,于是被迫代替她去往敵國和親刀疙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評論 2 354

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

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫集歇、插件诲宇、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,101評論 4 62
  • 千里之行纺荧,始于足下输枯,一千里的距離要一步一步地走桃熄,緊盯目標(biāo)蜻拨,不要放棄收夸,終會到達(dá)厘灼。我們在日常的學(xué)習(xí)工作中也要堅(jiān)...
    寒梅怡人閱讀 658評論 2 0
  • 明知此日逢初八茅姜,正值春風(fēng)拂柳斜奋姿。 跪地?zé)X無限意称诗,出郊祭祖萬千家。 不由各自心生孝袜香,難得雙眸淚濕花困鸥。 縱是黃泉終有...
    雪窗_武立之閱讀 474評論 2 4
  • 一片樹林里分出兩條路疾就,而我選擇了人跡更少的一條猬腰,從此決定了我一生的道路鸟废。——《未選擇的路》 ———— 男孩站在一條...
    你催我也沒有文閱讀 922評論 0 15
  • 想給學(xué)長學(xué)姐畢業(yè)禮物泞边,總感覺自己什么都沒有阵谚,唯有平時你們對我的好 想給你們自己喜歡的書或者是喜歡的明信片蚕礼,但你們不...
    隨心羈旅閱讀 677評論 0 1