亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS開發項目- 基于WebSocket的聊天通訊(1)

2020-07-26 03:05:51
字體:
來源:轉載
供稿:網友

公司項目需要開發一個類似QQ、微信的即時IM聊天功能,做到實時監控消息,需要用的技術是websocket。

概述WebSocket:

1.1 為什么我們需要WebSocket這樣的實時的通信協議?

WebSocket是web通信方式的一種,像我們熟知的HTTP協議也是web通信方式的一種。但是我們知道HTTP協議是一種無狀態的協議,其服務端本身不具備識別客戶端的能力,必須借助外部的一些信息比如說session和cookie,才能與特定的客戶端保持通信。也就是說我們所發送的每一個HTTP的請求都會帶上請求頭中一些相應的信息還有cookie,這明顯會增加我們傳輸的信息的體量從而帶來一定的網絡延遲,對于一些對通信的實時性要求比較高的應用來說就是不可忍受的了,比如說聊天程序或者是運行在瀏覽器中的實時小游戲。最郁悶的卻還是這些頭信息和cookie往往對于服務器響應客戶端的請求來說是多余的,也就是說雖然我每個請求都帶了這些信息,但是服務器與客戶端的交互過程中可能根本用不上這些信息。

為了改善HTTP請求的這種網絡延遲的情況,也出現了一些適應不同需求的其他的[web通信]方式,比如說:輪詢,長輪詢(long-polling),數據流,EventSouce等等,WebSocket便是其中一種。

實際上大多數基于因特網(或者局域網)的網絡鏈接通常都包含長連接和基于TCP套接字的雙向消息交換。但是TCP協議是屬于最底層的網絡通信協議了,讓一些不能信任的客戶端腳本去訪問底層的TCP套接字顯然是不太安全的,因此WebSocket實現了一種較為安全的方案,它允許客戶端腳本在客戶端和支持WebSocket協議的服務器之間創建雙向的套接字連接。從而使實時通信的某些網絡操作變得簡單。

1.2 WebSocket是如何工作的?

我們知道了WebSocket的主要作用是,允許服務器端與客戶端進行全雙工(full-duplex)的實時通信。這里有個例子特別好:HTTP協議像發電子郵件,發出后必須等待對方回信;WebSocket則是像打電話,服務器端和客戶端可以同時向對方發送數據,它們之間存著一條持續打開的數據通道。

1.Pod導入SocketRocket

platform :ios,'7.0'target '白__Socket--Demo1' do   pod 'SocketRocket', '~> 0.5.1'end

2.導入對象SRWebSocket

#import "ViewController.h"#import "SRWebSocket.h"@interface ViewController ()<SRWebSocketDelegate>@property(nonatomic,strong) SRWebSocket *webSocket;@end@implementation ViewController- (void)viewDidLoad {  [super viewDidLoad];}//初始化- (void)Reconnect{  NSLog(@"1221---open");  self.webSocket.delegate = nil;  [self.webSocket close];  self.webSocket = [[SRWebSocket alloc] initWithURLRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"ws://192.168.5.120:4141"]]];  self.webSocket.delegate = self;  self.title = @"Opening Connection...";  [self.webSocket open];}- (void)viewWillAppear:(BOOL)animated{  [self Reconnect];}- (void)viewDidDisappear:(BOOL)animated{  // Close WebSocket  self.webSocket.delegate = nil;  [self.webSocket close];  self.webSocket = nil; }

3.SRWebSocketDelegate

//連接成功//代理方法實現#pragma mark - SRWebSocketDelegate- (void)webSocketDidOpen:(SRWebSocket *)webSocket{  NSLog(@"Websocket Connected");  self.title = @"Connected!"; }//連接失敗- (void)webSocket:(SRWebSocket *)webSocket didFailWithError:(NSError *)error{  NSLog(@":( Websocket Failed With Error %@", error);  self.title = @"Connection Failed! (see logs)";  self.webSocket = nil; }//接收到新消息的處理- (void)webSocket:(SRWebSocket *)webSocket didReceiveMessage:(id)message{//  NSString *str1 = self.replyContent.text;//  NSString *str2 = [str1 stringByAppendingFormat:@"%@/n",message];//  self.replyContent.text = str2;  NSLog(@"%@--askl",message); }//連接關閉- (void)webSocket:(SRWebSocket *)webSocket didCloseWithCode:(NSInteger)code reason:(NSString *)reason wasClean:(BOOL)wasClean{  NSLog(@"Closed Reason:%@",reason);  self.title = @"Connection Closed! (see logs)";  self.webSocket = nil; }//該函數是接收服務器發送的pong消息,其中最后一個是接受pong消息的,在這里就要提一下心跳包,一般情況下建立長連接都會建立一個心跳包,用于每隔一段時間通知一次服務端,客戶端還是在線,這個心跳包其實就是一個ping消息,我的理解就是建立一個定時器,每隔十秒或者十五秒向服務端發送一個ping消息,這個消息可是是空的- (void)webSocket:(SRWebSocket *)webSocket didReceivePong:(NSData *)pongPayload{  NSString *reply = [[NSString alloc] initWithData:pongPayload encoding:NSUTF8StringEncoding];  NSLog(@"%@",reply); }#pragma mark - SendButton Response- (IBAction)sendAction:(id)sender {  [self.view endEditing:YES];  // WebSocket  if (self.webSocket) {    [self.webSocket send:@"您好 !"];  }}

實現效果:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩电影中文字幕在线观看| 欧美国产在线视频| 成人久久久久爱| 久久影视免费观看| 日韩精品视频三区| 日韩理论片久久| 国产精品一区久久| www.久久久久| 91网站在线免费观看| 成人黄色免费在线观看| 久久久久国产精品www| 日韩激情第一页| 亚洲无av在线中文字幕| 中文字幕亚洲情99在线| 欧美一级大片在线免费观看| 亚洲精品在线观看www| 欧美二区乱c黑人| 热久久免费国产视频| 丝袜亚洲欧美日韩综合| 亚洲影视九九影院在线观看| 欧美视频在线免费| 精品久久香蕉国产线看观看gif| 亚洲黄色www网站| 91精品国产综合久久久久久蜜臀| 成人啪啪免费看| 久久91亚洲精品中文字幕| 亚洲精品白浆高清久久久久久| 青青青国产精品一区二区| 国产精品无av码在线观看| 日韩在线高清视频| 国产欧美精品日韩| 欧美激情网站在线观看| 欧美日韩视频免费播放| 国产美女精品视频免费观看| 国产精品美女呻吟| 色偷偷91综合久久噜噜| 精品国产999| 26uuu国产精品视频| 欧洲中文字幕国产精品| 亚洲精品久久久久久久久久久久久| 日韩av在线直播| 精品视频在线观看日韩| 68精品久久久久久欧美| 日韩hd视频在线观看| 一区二区三区四区精品| 久久精品电影网站| 国产精品狠色婷| 日韩视频在线一区| 中文字幕日韩精品在线观看| 欧美一性一乱一交一视频| 91高清视频免费观看| 国产精品偷伦一区二区| 97国产suv精品一区二区62| 亚洲一区二区久久久| 亚洲国产高清高潮精品美女| 国产精品欧美一区二区| 亚洲国产精久久久久久久| 中文字幕在线精品| 欧美理论片在线观看| 欧美日韩一二三四五区| 国产精品欧美在线| 91福利视频在线观看| 免费av一区二区| 久久久精品一区二区三区| 成人精品视频久久久久| 国产人妖伪娘一区91| 91高清视频在线免费观看| 欧美在线亚洲一区| 中文字幕自拍vr一区二区三区| 国模叶桐国产精品一区| 中文字幕亚洲自拍| 亚洲国产精品电影在线观看| 欧美精品免费在线| 亚洲精美色品网站| 亚洲欧美成人一区二区在线电影| 欧美日本高清视频| 日本欧美在线视频| 亚洲а∨天堂久久精品喷水| 国产午夜精品免费一区二区三区| 亚洲国产婷婷香蕉久久久久久| 久久国产精品视频| 国产视频久久网| 日韩经典中文字幕在线观看| 亚洲精品久久久久中文字幕二区| 国产成人精品久久亚洲高清不卡| 久久视频这里只有精品| 亚洲黄色在线观看| 国产精品流白浆视频| 欧美与黑人午夜性猛交久久久| 最好看的2019年中文视频| 国产精品视频一区二区三区四| 成人av.网址在线网站| 国产精品日韩欧美大师| 亚洲精品免费av| 日韩欧美在线视频免费观看| 亚洲free嫩bbb| 亚洲美女性生活视频| 中文字幕一区二区三区电影| 久久精品视频免费播放| 在线播放国产一区中文字幕剧情欧美| 久久成人在线视频| www亚洲欧美| 91精品国产综合久久香蕉的用户体验| 国产精品三级美女白浆呻吟| 欧美日韩成人在线视频| 18性欧美xxxⅹ性满足| 久久中文久久字幕| 欧美黄色性视频| 欧美一级高清免费| 成人黄色中文字幕| 国产主播欧美精品| 日韩久久精品成人| 日韩精品视频在线观看网址| 欧美丰满少妇xxxxx做受| 久久精品成人欧美大片| 欧美猛交ⅹxxx乱大交视频| 欧美大尺度在线观看| 青青久久av北条麻妃黑人| 日本中文字幕不卡免费| 亚洲欧美中文另类| 日韩中文字幕国产| 在线观看国产精品日韩av| 国产精品第10页| 91精品在线观看视频| 中文字幕亚洲无线码在线一区| 日韩精品日韩在线观看| 国产精品xxx视频| 欧美亚洲伦理www| 国产精品成人免费视频| 日本高清视频一区| 久久精品国产91精品亚洲| 日韩精品免费综合视频在线播放| www国产亚洲精品久久网站| 成人黄色在线播放| 在线成人激情黄色| 97国产精品视频人人做人人爱| 欧美精品激情视频| 亚洲国产精品专区久久| 日韩最新av在线| 庆余年2免费日韩剧观看大牛| 国产精品日韩精品| xxxx性欧美| 亚洲japanese制服美女| 国内精品小视频在线观看| 国产欧美一区二区三区四区| 久久精品亚洲热| 亚洲欧洲日产国码av系列天堂| 最好看的2019的中文字幕视频| 国产黑人绿帽在线第一区| 国产成人亚洲精品| www.久久色.com| 97精品国产aⅴ7777| 91爱爱小视频k| 久久久久亚洲精品国产| 国产成人在线播放| 在线观看日韩专区| 在线观看国产精品日韩av| 日韩大陆毛片av| 亚洲欧美日韩精品久久亚洲区| 亚洲成av人片在线观看香蕉| 日韩美女免费观看| 福利精品视频在线| 日韩av片永久免费网站| 亚洲色图在线观看|