微信,QQ这类IMapp怎么做——谈谈Websocket任淏

关于我和WebSocket的缘:我从大二在计算机网络课上听老师讲过之后,第一次使用就到了毕业之后的第一份工作。直到最近换了工作,到了一家是含有IM社交聊天功能的app的时候,我觉得我现在可以谈谈我对WebSocket/Socket的一些看法了。要想做IM聊天app,就不得不理解WebSocket和Socket的原理了,听我一一道来。

目录

1.WebSocket使用场景

2.WebSocket诞生由来

3.谈谈WebSocket协议原理

4.WebSocket和Socket的区别与联系

5.iOS平台有哪些WebSocket和Socket的开源框架

6.iOS平台如何实现WebSocket协议

一.WebSocket的使用场景

1.社交聊天

2.弹幕

说到这里,大家一定里面想到了A站和B站了。确实,他们的弹幕一直是一种特色。而且弹幕对于一个视频来说,很可能弹幕才是精华。发弹幕需要实时显示,也需要和聊天一样,需要即时。

3.多玩家游戏

4.协同编辑

现在很多开源项目都是分散在世界各地的开发者一起协同开发,此时就会用到版本控制系统,比如Git,SVN去合并冲突。但是如果有一份文档,支持多人实时在线协同编辑,那么此时就会用到比如WebSocket了,它可以保证各个编辑者都在编辑同一个文档,此时不需要用到Git,SVN这些版本控制,因为在协同编辑界面就会实时看到对方编辑了什么,谁在修改哪些段落和文字。

5.股票基金实时报价

6.体育实况更新

全世界的球迷,体育爱好者特别多,当然大家在关心自己喜欢的体育活动的时候,比赛实时的赛况是他们最最关心的事情。这类新闻中最好的体验就是利用Websocket达到实时的更新!

7.视频会议/聊天

8.基于位置的应用

越来越多的开发者借用移动设备的GPS功能来实现他们基于位置的网络应用。如果你一直记录用户的位置(比如运行应用来记录运动轨迹),你可以收集到更加细致化的数据。

9.在线教育

在线教育近几年也发展迅速。优点很多,免去了场地的限制,能让名师的资源合理的分配给全国各地想要学习知识的同学手上,Websocket是个不错的选择,可以视频聊天、即时聊天以及其与别人合作一起在网上讨论问题...

10.智能家居

这也是我一毕业加入的一个伟大的物联网智能家居的公司。考虑到家里的智能设备的状态必须需要实时的展现在手机app客户端上,毫无疑问选择了Websocket。

11.总结

从上面我列举的这些场景来看,一个共同点就是,高实时性!

二.WebSocket诞生由来

1.最开始的轮询Polling阶段

2.改进版的长轮询Longpolling阶段

3.WebSocket诞生

现在急需的需求是能支持客户端和服务器端的双向通信,而且协议的头部又没有HTTP的Header那么大,于是,Websocket就诞生了!

上图就是Websocket和Polling的区别,从图中可以看到Polling里面客户端发送了好多Request,而下图,只有一个Upgrade,非常简洁高效。至于消耗方面的比较就要看下图了

上图中,我们先看蓝色的柱状图,是Polling轮询消耗的流量,

UsecaseA:1,000clientspollingeverysecond:Networkthroughputis(871x1,000)=871,000bytes=6,968,000bitspersecond(6.6Mbps)

UsecaseB:10,000clientspollingeverysecond:Networkthroughputis(871x10,000)=8,710,000bytes=69,680,000bitspersecond(66Mbps)

UsecaseC:100,000clientspollingevery1second:Networkthroughputis(871x100,000)=87,100,000bytes=696,800,000bitspersecond(665Mbps)

而Websocket的Frame是justtwobytesofoverheadinsteadof871,仅仅用2个字节就代替了轮询的871字节!

UsecaseA:1,000clientsreceive1messagepersecond:Networkthroughputis(2x1,000)=2,000bytes=16,000bitspersecond(0.015Mbps)

UsecaseB:10,000clientsreceive1messagepersecond:Networkthroughputis(2x10,000)=20,000bytes=160,000bitspersecond(0.153Mbps)

UsecaseC:100,000clientsreceive1messagepersecond:Networkthroughputis(2x100,000)=200,000bytes=1,600,000bitspersecond(1.526Mbps)

相同的每秒客户端轮询的次数,当次数高达10W/s的高频率次数的时候,Polling轮询需要消耗665Mbps,而Websocket仅仅只花费了1.526Mbps,将近435倍!!

三.谈谈WebSocket协议原理

Websocket的数据传输是frame形式传输的,比如会将一条消息分为几个frame,按照先后顺序传输出去。这样做会有几个好处:

1)大数据的传输可以分片传输,不用考虑到数据大小导致的长度标志位不足够的情况。

四.WebSocket和Socket的区别与联系

首先,Socket其实并不是一个协议。它工作在OSI模型会话层(第5层),是为了方便大家直接使用更底层协议(一般是TCP或UDP)而存在的一个抽象层。Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API)。

Socket通常也称作”套接字”,用于描述IP地址和端口,是一个通信链的句柄。网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket,一个Socket由一个IP地址和一个端口号唯一确定。应用程序通常通过”套接字”向网络发出请求或者应答网络请求。

Socket在通讯过程中,服务端监听某个端口是否有连接请求,客户端向服务端发送连接请求,服务端收到连接请求向客户端发出接收消息,这样一个连接就建立起来了。客户端和服务端也都可以相互发送消息与对方进行通讯,直到双方连接断开。

所以基于WebSocket和基于Socket都可以开发出IM社交聊天类的app

五.iOS平台有哪些WebSocket和Socket的开源框架

六.iOS平台如何实现WebSocket协议

Talkischeap。Showmethecode——LinusTorvalds

首先这是SRWebSocket定义的一些成员变量

@property(nonatomic,weak)iddelegate;/**Adispatchqueueforschedulingthedelegatecalls.Thequeuedoesn'tneedbeaserialqueue.If`nil`and`delegateOperationQueue`is`nil`,thesocketusesmainqueueforperformingalldelegatemethodcalls.*/@property(nonatomic,strong)dispatch_queue_tdelegateDispatchQueue;/**Anoperationqueueforschedulingthedelegatecalls.If`nil`and`delegateOperationQueue`is`nil`,thesocketusesmainqueueforperformingalldelegatemethodcalls.*/@property(nonatomic,strong)NSOperationQueue*delegateOperationQueue;@property(nonatomic,readonly)SRReadyStatereadyState;@property(nonatomic,readonly,retain)NSURL*url;@property(nonatomic,readonly)CFHTTPMessageRefreceivedHTTPHeaders;//Optionalarrayofcookies(NSHTTPCookieobjects)toapplytotheconnections@property(nonatomic,copy)NSArray*requestCookies;//Thisreturnsthenegotiatedprotocol.//Itwillbeniluntilafterthehandshakecompletes.@property(nonatomic,readonly,copy)NSString*protocol;下面这些是SRWebSocket的一些方法

///--------------------------------------#pragmamark-SRWebSocketDelegate///--------------------------------------@protocolSRWebSocketDelegate-(void)webSocket:(SRWebSocket*)webSocketdidReceiveMessage:(id)message;@optional-(void)webSocketDidOpen:(SRWebSocket*)webSocket;-(void)webSocket:(SRWebSocket*)webSocketdidFailWithError:(NSError*)error;-(void)webSocket:(SRWebSocket*)webSocketdidCloseWithCode:(NSInteger)codereason:(NSString*)reasonwasClean:(BOOL)wasClean;-(void)webSocket:(SRWebSocket*)webSocketdidReceivePong:(NSData*)pongPayload;//ReturnYEStoconvertmessagessentasTexttoanNSString.ReturnNOtoskipNSData->NSStringconversionforTextmessages.DefaultstoYES.-(BOOL)webSocketShouldConvertTextFrameToString:(SRWebSocket*)webSocket;@enddidReceiveMessage方法是必须实现的,用来接收消息的。

下面4个did方法分别对应着Open,Fail,Close,ReceivePong不同状态的代理方法

方法就上面这些了,我们实际来看看代码怎么写

先是初始化Websocket连接,注意此处ws://或者wss://连接有且最多只能有一个,这个是Websocket协议规定的

self.ws=[[SRWebSocketalloc]initWithURLRequest:[NSURLRequestrequestWithURL:[NSURLURLWithString:[NSStringstringWithFormat:@"%@://%@:%zd/ws",serverProto,serverIP,serverPort]]]];self.ws.delegate=delegate;[self.wsopen];

THE END
1.个人信息泄露的影响有哪些?在社交平台中,很多人都喜欢晒自己的生活日常。例如,有的家长喜欢在朋友圈晒孩子的照片,甚至会不小心泄露了孩子的姓名、学校等,有的人喜欢在朋友圈晒火车票、登机牌,却忘了将姓名、身份证号等进行马赛克处理,这些都是比较常见的泄露个人信息的行为。 3、慎重参加网络调查、抽奖活动 https://www.64365.com/zs/774628.aspx
2.关于网络安全意识的调查问卷18、任何个人和组织有权对危害网络安全的行为向___等部门举报? 网信 [1票] 33.33% 电信 [0票] 0% 公安 [2票] 66.67% 工信 [0票] 0% 19、若您的个人信息已被泄露,您认为以下哪些行为是正确的? A.收集证据 [3票] 25.00% B.向有关部门举报 [3票] 25.00% C.在社交平台上分享并提醒其他人 [3票http://www.hanzhong.gov.cn/hzszf/hdjl/zxdc/dcjg.shtml?id=71f94869b7cf46699de8c353e05e8ecf
3.关于网络安全教育教案(精选17篇)师:刚才我们讲的都是过度沉迷网络造成的危害,但是,网络还是有许多的用途,它为我们搭建了自主学习的宽广平台,它使我们获取更多的信息知识,“足不出户”,“?尽览天下风云”;它为我们提供参与社交活动的广阔空间,它丰富了我们的生活,摆脱了“两点一线”读书生活的单调。所以,我们要学会正确的运用网络。那么,如何才算正https://mip.ruiwen.com/jiaoan/4223549.html
4.Contents/premium.mdatmaster·Newslab2020/Contents·GitHub美国媒体闭嘴了吗?它们的报道有没有问题? TikTok成为重要的新闻信息来源; 美国阴谋论与中国舆论场的互动。 652 社交媒体平台必定走向“垃圾化”? 2023/2/16 “流量扶持”揭下平台“中立性”的面具; 平台“垃圾化”三部曲; 流量分配和平台权力。 651 ChatGPT与媒体 https://github.com/Newslab2020/Contents/blob/master/premium.md
5.十大社交软件排行榜正规社交平台有哪些2024年社交软件十大品牌最新发布,社交软件排行榜前十名品牌有微信、抖音、QQ、微博、快手、哔哩哔哩、小红书、知乎、豆瓣、百度贴吧。社交软件10大品牌排行榜由品牌研究部门收集整理大数据分析、研究得出,帮助你了解社交软件哪个牌子好。https://www.maigoo.com/maigoo/1211sjmt_index.html
6.发表文章的平台有哪些:从博客到社交媒体发表文章的平台有哪些:从博客到社交媒体 在互联网时代,内容创作者们拥有了前所未有的机会来分享他们的知识和见解。随着技术的发展,发表文章的平台也日益多元化,为创作者们提供了更多的选择和可能性。本文将探讨一些主要的发表文章平台,帮助大家找到最适合自己的发声之地。https://blog.csdn.net/vlogbbs/article/details/139867706
7.杨莉代表:加大社交电商平台监管严防假货洼地危害农村新闻频道杨莉代表:加大社交电商平台监管 严防假货洼地危害农村发稿时间:2020-05-28 14:37:00 来源: 中国青年网 播放出错啦,请尝试退出重试或刷新 刷新重试 责任编辑:墨北 首页| 上一页 1 下一页 | 尾页 关于我们 中国青年报 联系我们 品牌广告 邮箱 网站地图 更多链接 不良信息举报中心 举报联系方式 中国青年报 http://news.youth.cn/gn/202005/t20200528_12346987.htm
8.跟陌陌差不多的社交软件有哪些?揭秘什么聊天平台美女最多类似陌陌差不多的社交软件有什么?比陌陌更好更美女的交友软件有哪些?现代人工作生活节奏日趋紧凑,所以很多人都吐槽很难结识异性,所以早几年开始比如陌陌这样的专门针对异性交友的软件就开始火爆起来的。 像陌陌应该算是整个付费异性社交平台里面比较火热的存在了,当然陌陌这个软件的话很火爆,不过也有一些不足的地方,比https://www.jianshu.com/p/a00ded5c64bb
9.游戏交友软件有哪些好用?游戏社交app下载游戏交友软件中收集各种开黑打游戏找队友的软件,现在越来越多的用户喜欢玩游戏,游戏也让两个不认识的人通过不同的方式近距离的接触,软件会帮你精准的分析匹配到和自己志同道合的玩家,通过软件探讨游戏的攻略,了解彼此的玩游戏的策略,平台也会有各种的游戏大神,你还可以进一步的和大神交流了,需要的用户快到绿色资源http://www.downcc.com/k/youxijiaoyouruanjian/
10.币圈十大交易所app官网下载最新版本交易平台区块链社交媒体类软件为数字货币爱好者建立社群和交流平台,聚焦于讨论、分享和建设数字资产社区。其中许多应用都提供比赛游戏和数字货币打赏等活动,吸引用户积极参与。一些知名的社交媒体应用有reddit、Twitter、Telegram等。 以上就是币圈十大交易所app官网下载最新版本的详细内容,更多关于十大交易所app的资料请关注脚本之家其它相https://www.jb51.net/blockchain/904073.html
11.2024处理不满十四周岁未成年人个人信息的条件有哪些2、尽量远离社交平台涉及的互动类活动 现在很多社交平台,会有一些填写个人信息即可生成有趣内容并可以和朋友分享的活动,看似有趣的表面,实质上却以游戏的手段获取了大量的用户信息,遇到那种奔着个人隐私信息去的“趣味”活动,建议不要参与。 3、安装病毒防护软件 不管是计算机还是智能手机,都已经成为信息泄露的高发地带https://www.66law.cn/laws/1687158.aspx
12.2023十大泄密案一一5件与中国有关5.美国窃取社交平台用户隐私 美国社交平台推特“掌门人”埃隆·马斯克在接受采访时称,美国政府能够读取所有推特用户的一切信息。关于此事,中国外交部发言人汪文斌表示,一个连盟国领导人隐私都不尊重的国家,在社交网络上监控用户隐私数据并不出人意料。他指出,“美国指责别人的事情,要么它曾经做过,要么它正在做。”联合https://www.meipian.cn/4zjvj3og
13.11月2018人民论坛我们当中的任何一个人都没有涉嫌触犯任何的刑事罪行。我们当中的每一个人只是凭着自己的良知在社交媒体网络上发表自己的观点。就以许渊臣的案件来说,一些人为了要表达自己的观点让大众知道,但是,又没有一个平台让他们发表意见,许渊臣就提供了一个允许他们发表意见的平台。https://wangruirong.wordpress.com/2018/11/
14.语音转换成文字软件腾讯云开发者社区在课堂上、讲座上,每一点都是不容错过的精彩,让人想把其牢牢记在脑海,手写记录难以跟上别人口头讲解的速度,埋头苦记的话往往会错过一个又一个得重点,将语音实时记录下来这才是正确的方式。这里就可以用到语言中文字的工具,这种方式大大提升了记录的效率。 这里先https://cloud.tencent.com/developer/information/%E8%AF%AD%E9%9F%B3%E8%BD%AC%E6%8D%A2%E6%88%90%E6%96%87%E5%AD%97%E8%BD%AF%E4%BB%B6
15.敢说中国好话?立刻删帖封号!美国社交平台为何这么听政府的话这些桑解阵的支持者被脸书封号之后,统统迁移到了推特,自拍视频发到推特上证明自己不是什么机器人,结果推特也立刻封杀了他们的账号。这种跨平台的封杀,显示出目前各个社交平台之间已经建立起了一套横向协调的言论管控机制,确保没有漏网之鱼可以在任何主流社交平台上从事不符合美国政府意志的活动。 https://i.ifeng.com/c/8TobzJGos9E