ios-SignalR長連接使用

最近本人在項目中需要實現(xiàn)聊天技術(shù).最開始的時候本來想采用第三方SDK來進行聊天,考慮到后期的成本以及數(shù)據(jù)安全性,最終還是選擇了SignalR來實現(xiàn).SignalR也是長連接的一種.什么是長連接呢,長連接->傳輸數(shù)據(jù)->保持連接 -> 傳輸數(shù)據(jù)-> 。。。 ->關(guān)閉連接,指建立連接后不管是否使用都保持連接。例如XMPP.這也是經(jīng)常用來實現(xiàn)聊天的技術(shù).但是在實際開發(fā)中,還得要結(jié)合后臺人員的技術(shù)問題.綜合考慮我們采用了SignalR.

? 使用SignalR也非常容易.最常用的方法就是用cocoapods導(dǎo)入? platform :ios, '8.0'? ? pod 'SignalR-ObjC', '~> 2.0'.大家也可以直接上github上看一下相關(guān)的解釋.直接導(dǎo)入也可以.強烈建議用cocoaPods

如何使用呢?這是大家很關(guān)心的問題,這個地方我只講移動開發(fā)端的使用.畢竟本人是ios開發(fā)人員哈.

通過github上面的文章我們可以看見以下的代碼.下面的這段代碼就是連接SignalR.@"http://localhost/mysite/echo"這個就是SignalR連接的地址.由后臺人員提供.下面的方法是一系列的回調(diào)方法,比如開始連接,收到消息,正在連接等等.用的比較多的就是setReconnected這個方法,代表已經(jīng)連接成功.如果這個方法回調(diào)了,代表你的SignalR長連接已經(jīng)連接成功.

//Client

#import "SignalR.h"

// Connect to the service連接服務(wù)器

SRHubConnection *hubConnection = [SRHubConnection connectionWithURLString:@"http://localhost/mysite"];

// Create a proxy to the chat service

//創(chuàng)建一個代理到聊天服務(wù)

//這個地方使用的時候要注意實體的使用chat.這個chat并不是固定的,是由后臺人員給的.如果這個不對的話將會導(dǎo)致后面的回調(diào)方法不執(zhí)行

SRHubProxy *chat = [hubConnection createHubProxy:@"chat"];

//注冊方法,addMessage: ? 后臺人員一旦在后臺調(diào)用了這個方法,只要移動端注冊了這個方法就會立即執(zhí)行

[chat on:@"addMessage" perform:self selector:@selector(addMessage:)];

// Register for connection lifecycle events

[hubConnection setStarted:^{

NSLog(@"Connection Started");

[connection send:@"hello world"];

}];

[hubConnection setReceived:^(NSString *message) {

NSLog(@"Connection Recieved Data: %@",message);

}];

[hubConnection setConnectionSlow:^{

NSLog(@"Connection Slow");

}];

[hubConnection setReconnecting:^{

NSLog(@"Connection Reconnecting");

}];

//連接成功

[hubConnection setReconnected:^{

NSLog(@"Connection Reconnected");

}];

//連接關(guān)閉

[hubConnection setClosed:^{

NSLog(@"Connection Closed");

}];

[hubConnection setError:^(NSError *error) {

NSLog(@"Connection Error %@",error);

}];

// Start the connection

//開始連接

[hubConnection start];

//注冊的方法 ?

- (void)addMessage:(NSString *)message {

// Print the message when it comes in

NSLog(message);

}

SignalR的使用其實在移動開發(fā)端很簡單.主要是一個連接和注冊方法,以及主動實現(xiàn).聊天的復(fù)雜邏輯主要是在后臺實現(xiàn).大致說一下SignalR聊天如何在移動開發(fā)端實現(xiàn).后臺給接口,也就是回調(diào)方法的名字.后臺要向我們發(fā)送消息的時候就會調(diào)用某個方法,然后我們已經(jīng)在移動開發(fā)端注冊了這個方法,后臺調(diào)用的時候移動開發(fā)端會進行相應(yīng)的回調(diào),并收到后臺返回的字段既聊天信息.

SRHubProxy *chat = [hubConnection createHubProxy:@"WebRtcHub"];

//注冊接收聊天信息的方法

[self.chat1 on:@"updateMsgCallBack" perform:self selector:@selector(resicvechatMessage:andMessage:)];

//接收到單獨的聊天消息

-(void)resicvechatMessage:(NSDictionary *)User andMessage:(NSDictionary *)Message

{

//處理接收到的聊天信息

NSLog(@"接受到了聊天信息");

NSLog(@"uset=%@? 消息=%@",User,Message);

NSDictionary *mesDic=@{

@"User":User,

@"Message":Message

};

[[NSNotificationCenter defaultCenter] postNotificationName:@"sendChatMessage" object:Message];

}

那么我們?nèi)绾谓o后臺發(fā)送消息呢.SignalR也給我們提供了一個方法.

SRHubProxy *chat = [hubConnection createHubProxy:@"chat"];

//invok: withArgs:? 這個方法就是主動實現(xiàn)方法,上面我們注冊方法可以理解成被動執(zhí)行方法.sendMsg是后臺定義的方法.由后臺提供方法名.withArgs后面的參數(shù)是數(shù)組,將你需要穿的數(shù)據(jù)包成數(shù)組傳給后臺.至于數(shù)據(jù)的如何處理就需要移動開發(fā)端和后臺的配合.

[chat invoke:@"sendMsg" withArgs:@[dic1,[YLShareModel shareViewModel].roomID]];

簡而言之,SignalR的使用還是非常簡單的.一個是連接,一個是主動實現(xiàn)方法,另外一個是被動實現(xiàn)方法.掌握好這三點就夠?qū)崿F(xiàn)聊天了.有問題可以留言

承接APP,小程序,公眾號開發(fā). 性價比高.+V信:17723566468 ?有單子也可找我一起做哦

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,568評論 19 139
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,622評論 30 472
  • iOS開發(fā)系列--網(wǎng)絡(luò)開發(fā) 概覽 大部分應(yīng)用程序都或多或少會牽扯到網(wǎng)絡(luò)開發(fā),例如說新浪微博、微信等,這些應(yīng)用本身可...
    lichengjin閱讀 4,040評論 2 7
  • 關(guān)于XMPP最權(quán)威的講解:http://www.jabbercn.org/RFC3920(這個才是最權(quán)威的,下面文...
    隨風飄蕩的小逗逼閱讀 1,640評論 1 5
  • YYKit demo 的微博demo 中,有一個轉(zhuǎn)發(fā),點贊和評論,假如轉(zhuǎn)發(fā)這個字數(shù)是不固定的,如: 這個時候如果想...
    顏子閱讀 1,334評論 0 6

友情鏈接更多精彩內(nèi)容