iOS SocketRocket
一残拐、簡單介紹
SocketRocket是一個WebSocket客戶端(WebSocket是適用于Web應用的下一代全雙工通訊協(xié)議,被成為“Web的TCP”碟嘴,它實現(xiàn)了瀏覽器與服務器的雙向通信)溪食,采用Object-C編寫。SocketRocket遵循最新的WebSocket規(guī)范RFC 6455娜扇。
二错沃、如何使用
? socketRocket 支持pod,因此直接添加然后install
? 引入頭文件
#import "SocketRocket.h"
? 遵循代理.
@interface HFSocketRocketViewController ()<SRWebSocketDelegate>
三雀瓢、初始化SocketRocket
__weak HFSocketRocketViewController *weakSelf = self;
//Url
NSURL *url = [NSURL URLWithString:STOCK_SMALL];
//請求
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
//初始化請求`
weakSelf.webSocket = [[SRWebSocket alloc] initWithURLRequest:request];
//代理協(xié)議`
weakSelf.webSocket.delegate = self;`
// 實現(xiàn)這個 SRWebSocketDelegate 協(xié)議啊`
//直接連接`
[weakSelf.webSocket open]; // open 就是直接連接了
**三枢析、實現(xiàn)代理**
- (void)webSocketDidOpen:(SRWebSocket *)webSocket {
NSLog(@"連接成功,可以立刻登錄你公司后臺的服務器了刃麸,還有開啟心跳");
}
-(void)webSocket:(SRWebSocket *)webSocket didFailWithError:(NSError *)error {
NSLog(@"連接失敗醒叁,這里可以實現(xiàn)掉線自動重連,要注意以下幾點");
NSLog(@"1.判斷當前網(wǎng)絡環(huán)境泊业,如果斷網(wǎng)了就不要連了把沼,等待網(wǎng)絡到來,在發(fā)起重連");
NSLog(@"2.判斷調用層是否需要連接吁伺,例如用戶都沒在聊天界面饮睬,連接上去浪費流量");
//關閉心跳包
[webSocket close];
}
- (void)webSocket:(SRWebSocket *)webSocket didCloseWithCode:(NSInteger)code reason:(NSString *)reason wasClean:(BOOL)wasClean {
//關閉心跳包
[webSocket close];
NSLog(@"連接斷開,清空socket對象篮奄,清空該清空的東西捆愁,還有關閉心跳!");
}
- (void)webSocket:(SRWebSocket *)webSocket didReceiveMessage:(id)message {
//收到數(shù)據(jù)代理方法
// 收到數(shù)據(jù)后,你要給后臺發(fā)送的數(shù)據(jù).
[webSocket send:@""];
}