微信,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.十大云课堂平台在线课堂网站有哪些2024年云课堂十大排行榜最新发布,十大云课堂排行榜前十名有中国大学MOOC、学堂在线、学银在线、智慧树网、智慧职教、网易云课堂、哔哩哔哩、华文慕课、优学院、国图公开课。云课堂10大排行榜由品牌研究部门收集整理大数据分析研究得出,帮助你了解在线学习平台有哪些。https://m.maigoo.com/maigoo/9354ykt_index.html
2.在线教育app排行榜前十名偏玩手游盒子分享十大在线教育app排行榜前十名手机应用,编辑为您推荐手机在线教育app排行榜第一名到前5名到前十名的应用。找在线教育app有哪些、在线教育app哪个好用,上偏玩手游盒子https://m.pianwan.com/s/zj-306026
3.网课平台排名线上货源平台,话本刷人气软件免费版在数字化时代,网课平台成为了学习的新趋势,它们不仅提供了灵活的学习时间,还涵盖了从基础教育到专业技能培训的广泛课程,根据最新的市场调查和用户反馈,以下是当前最受欢迎的网课平台排名: 1. Coursera - 提供来自全球顶尖大学的在线课程,覆盖各个学科领域。 https://www.scysry.com/kuaishou/202412-27584.html
4.付费知识系统排行榜:适应性在线教育能否引领新趋势总结来说,知识付费在线教育平台必须不断创新迭代,结合新兴信息技术的优势,提供更具吸引力、更为便捷和更高质量的服务体验,方能持续吸引学员并维持良好的口碑。未来的发展道路无疑充满挑战但同样也是光明无限。 以上讨论虽未直白谈及知识付费在线教育系统这一主题,但实际上却深刻地涉及到相关技术和服务模式的演进及其重要https://blog.csdn.net/doyulove/article/details/144313917
5.线上教育平台(多选题2)6262、公职人员因不明真相被裹挟或者被胁迫参与违法活动,经批评教育后确有悔改表现的,可以()政务处分。【多选题】 A、从轻 B、免予 C、不予 D、减轻 6263、法律、法规授权或者受国家机关依法委托管理公共事务的组织中从事公务的人员,在政务处分期内,不得晋升()。【多选题】 A、职务 B、岗位 C、职员等级 D、https://www.wjx.cn/vm/Po1x3j4.aspx
6.233网校233网校APP是由长沙二三三网络科技有限公司出品的移动在线学习平台,233网校深耕在线职业教育培训领域19年,覆盖建筑、金融、社工、经济师、医药、学历等10多种考试在线课程培训、智能题库、报考提醒等考证服务,注重专业教研和研发团队建设,是一站式考证学习备考平台。 https://itunes.apple.com/cn/app/233%E7%BD%91%E6%A0%A1-%E5%9C%A8%E7%BA%BF%E8%81%8C%E4%B8%9A%E6%95%99%E8%82%B2%E5%AD%A6%E4%B9%A0%E8%80%83%E8%AF%81%E5%B9%B3%E5%8F%B0/id964104520?l=cs
7.中国教育在线“作为中国教育的联结者和赋能者,中国教育在线致力于成为推动中国教育前行的力量。多年来,中国教育在线专注教育领域,坚持满足各类教育需求,对接国内外2000余所高校、3000余所高中,覆盖全国30余个省市,发布各类权威的招考、就业、辅导等权威的教育信息,专注于为国内外https://www.eol.cn/
8.www.sdmzgz.cn/go92775899.shtml四季平台 麻7IIII2扣信任 老板强脱我的内裤 台湾三圾片 126.47MB 6083好评 厕奴调教新视频 小真的开发日记在线观看有翻译 www:“7899jizz”com 058.88MB 51好评 ccyy.oom的切换路线2023 男技师忍不住了 又粗又黄的黄色视频乱伦的 70.11MB 27好评 好硬好湿好大再深一点动态图 一女多男http://www.sdmzgz.cn/go92775899.shtml
9.Contents/premium.mdatmaster·Newslab2020/Contents·GitHub美国媒体闭嘴了吗?它们的报道有没有问题? TikTok成为重要的新闻信息来源; 美国阴谋论与中国舆论场的互动。 652 社交媒体平台必定走向“垃圾化”? 2023/2/16 “流量扶持”揭下平台“中立性”的面具; 平台“垃圾化”三部曲; 流量分配和平台权力。 651 ChatGPT与媒体 https://github.com/Newslab2020/Contents/blob/master/premium.md
10.天猫购物平台理想生活上天猫天猫Tmall.com由于该网站的robots.txt文件存在限制指令(限制搜索引擎抓取),系统无法提供该页面的内容描述https://www.tmall.com/
11.THEOL在线教育综合平台在线教育综合平台V9.0运行通知 2023年02月07日 石河子大学在线教育综合平台V9.0版本升级完成,2023.1.12日正式运行。平台访问方法如下: 一. 平台电脑端访问方式 平台地址:http://eol.shzu.edu.cn 登录账号:教师工号、学生学号 初始密码:统一身份认证密码 二. 平台手机端访问方式 V9.0平台手机端一律使用APP访问https://eol.shzu.edu.cn/meol/
12.云演最前沿安全技术在线分享 最新实验 研究方向涵盖二进制、Web、移动终端、IoT设备、黑客行为分析、智能算法、漏洞数据的建模及安全人工智能等领域。 连续多次荣获CNVD原创漏洞报送突出贡献单位 与多所高校、企业机构联合共建网络安全实验室 查看更多> 赛事中心 陕西省2024职业技能大赛网络安全管理员赛项 https://www.yunyansec.com/
13.大学考试官网【直播】新东方在线日语一对一体验课(40-60分钟) 友情链接:腾讯教育网易教育无忧考网考试吧考研帮可可英语公务员考试网在线英语听力室中学学科网在线翻译豆丁网听力课堂中国考研网新东方官网易考吧考研职上网会计职上网注册会计师职上网经济师职上网证券职上网基金有声小说听小说厚学网高三网看准网环球网校乐乐课堂律师公https://koolearn.com/
14.国家高等教育智慧教育平台国家高等教育智慧教育平台是由教育部委托、高等教育出版社有限公司建设和运行维护、北京理工大学提供技术支持的全国性、综合性在线开放课程平台。本网站致力于汇聚优质高等教育在线课程等资源,并推进广泛传播与共享,面向高校师生和社会学习者提供全面、优质、便利的课程搜https://higher.smartedu.cn/platform?platform=%E4%B8%AD%E5%9B%BD%E5%A4%A7%E5%AD%A6MOOC
15.Coursera一流教育者提供在线课程和证书。免费加入* Employment, Wages, and Projected Change in Employment by Typical Entry-level Education(按典型入门级教育划分的就业、工资和预计就业变化情况)?:美国劳工统计局。2022 年 8 月,www.bls.gov/emp/tables/education-summary.htm ** 薪资中位数和空缺职位数据来自美国 Lightcast? 招聘报告。与精选计划相关的https://www.coursera.org/
16.江西省教育考试院江西省2024年下半年高等教育自学考试成绩查询 江西省2025年普通高等学校招生考试网上报名暨艺术统考准考证打印入口 艺术统考准考证于11月25日9:00开始打印,其中音乐类考生须于11月25日9:00-27日17:00在系统中填报考试演唱(奏)曲目。 江西省2024年成人高考网上报名系统(成绩、录取查询、征集志愿填报) http://www.jxeea.cn/
17.日本最高设计奖GOODDESIGNAWARD2021百件获奖作品精彩出炉基于中国台湾台东地区16个乡镇和9个民族的各种传统食品为基础,以国际慢食运动的精髓为中心,策划的具有不同主题的活动。作为旅游产业、公共教育、食品及农业文化的重要平台,创建了一个慢食社区,推广传统饮食文化,支持当地产品。 十八、 一般构想·活动 93、分身机器人及相关服务 可以远程工作的分身机器人咖啡厅DAWN verhttps://www.digitaling.com/articles/621312.html
18.一周回顾丨教育行业大事件(06.21印度在线教育创业公司BYJU'S已获得来自全球科技投资公司BOND的融资,这是BOND首次投资印度初创企业。据悉,一年内, BYJU'S的估值提升了近一倍,本轮融资后,BYJU'S将成为印度估值第二高的初创企业。 Unacademy收购线上编程平台CodeChef 据外媒报道,刚刚获得1.1亿美元投资的印度教育科技初创公司Unacademy宣布收购线上算法和编https://www.iyiou.com/news/202006281005100
19.saas平台在线教育SaaS系统小程序SaaS教育教育SaaS软件云朵课堂SaaS教育系统栏目资讯,,教育行业专业SAAS服务商,云朵课堂一个低成本做在线教育的一站式解决方案,包含课程点播、教学管理功能,可快速搭建属于自己的网络教育系统,并迅速开展线上教学,SaaS教育平台,教育SaaS平台有哪些,小程序SaaS教育,教育SaaS软件等相关问题,可以点https://www.yunduoketang.com/article/c2.html
20.广东省教育考试院关于公示广东省2024年成人高校招生具有加分资格考生和符合免试接受成人教育条件人员名单的通知 考试日历更多>> 11-29 2024 12月招生考试历来了,赶紧收藏吧! 11-01 2024 11月招生考试历来了 09-30 2024 10月招生考试历来了! 政府采购更多>> 广东省教育考试院2024年下半年办公及生活用品采购项目询价(成交)结果公告 http://eea.gd.gov.cn/
21.家庭教育吧家庭教育吧,致力于打造父母孩子共同信赖的在线家庭教育平台,集合了大量优质家庭教育指导师,帮助千万家庭解决青少年教育问题,提升孩子综合能力。http://www.zjia8.com/
22.2022安全员C证判断题及在线模拟考试D、落地式操作平台高度不应大于20m 57、【单选题】施工现场必须设明显的安全警示标志。有人员车辆通行地段的沟槽必须设不低于的()防护栏,防护栏的横杆不少于两道。( C ) A、1.0m B、1.1m C、1.2m D、1.3m 58、【单选题】施工现场用电系统中,N线的绝缘色应是()。( C ) https://zx.aqscydt.com/ITCC0GVI.html
23.江苏省教育考试公众信息服务平台网址为:sdata.jseea.cn江苏省教育考试公众信息服务平台网址为:sdata.jseea.cn 江苏省教育考试公众信息服务平台网址为:http://sdata.jseea.cn 此江苏省教育考试公众信息服务系统是江苏省自学考试官方报名注册、免考办理、毕业登记和转考的唯一网站。 也是江苏省相关考试项目的查询和报名系统。https://www.js-zk.com/wenti/12130.html
24.辽宁招生考试之窗关于调整辽宁省普通高等学校专升本考试招生志愿填报、投档录取方式及招考工作时间有关事项的公告12-11 关于2025年1月辽宁省普通高中学业水平合格性考试补报名工作的通知12-09 辽宁省2024年成人高校招生录取信息查询时间及渠道12-09 指挥平台计划平台管理平台 https://www.lnzsks.com/