WebSocket與普通網(wǎng)絡(luò)請(qǐng)求的區(qū)別
WebSocket是建立的長(zhǎng)鏈接你虹,既建立連接后持續(xù)受到數(shù)據(jù)确憨,普通的網(wǎng)絡(luò)請(qǐng)求建立一次連接后只能請(qǐng)求一次數(shù)據(jù),想要再次請(qǐng)求數(shù)據(jù)必須再次建立網(wǎng)絡(luò)連接,用WebSocket可以保持和服務(wù)長(zhǎng)鏈接柒昏。
SocketRocket是Facebook開(kāi)源的一個(gè)用于 iOS, macOS and tvOS客戶端的websocket框架
1.pod 導(dǎo)入
1.創(chuàng)建websocket鏈接? ? ? ? ? ??
self.socket = [[SRWebSocket alloc] initWithURLRequest:?
[NSURLRequestrequestWithURL:[NSURLURLWithString:urlString]]]; ?//ws://xxx.xx.xx.xxx:8088
?NSLog(@"請(qǐng)求的websocket地址:%@",self.socket.url.absoluteString);
self.socket.delegate=self;
其中统屈,使用NSURLRequest進(jìn)行初始化可以自定義請(qǐng)求超時(shí)時(shí)間
2.SRWebSocketDelegate 代理方法實(shí)現(xiàn)
@protocolSRWebSocketDelegate
-(void)webSocket:(SRWebSocket *)webSocket didReceiveMessage:(id)message;//收到消息
@optional
-(void)webSocketDidOpen:(SRWebSocket *)webSocket;//連接成功
-(void)webSocket:(SRWebSocket *)webSocket didFailWithError:(NSError*)error;//連接錯(cuò)誤可以設(shè)置重連
-(void)webSocket:(SRWebSocket *)webSocket didCloseWithCode:(NSInteger)code reason:(NSString*)reason wasClean:(BOOL)wasClean;//socket連接斷開(kāi)
-(void)webSocket:(SRWebSocket *)webSocket didReceivePong:(NSData*)pongPayload;//*該函數(shù)是接收服務(wù)器發(fā)送的pong消息仑荐,
-(BOOL)webSocketShouldConvertTextFrameToString:(SRWebSocket *)webSocket;//返回YES以將作為文本發(fā)送的消息轉(zhuǎn)換為NSString码俩。返回NO,以跳過(guò)NSData ->對(duì)文本消息的NSString轉(zhuǎn)換扬霜。默認(rèn)值為YES定鸟。
@end
3.關(guān)閉鏈接
????使用對(duì)象調(diào)用- (void)close來(lái)關(guān)閉一個(gè)連接。
4.發(fā)送數(shù)據(jù)
????使用對(duì)象調(diào)用- (void)send:(id)data這個(gè)data可以是一個(gè)UTF8的字符串或者NSData對(duì)象