微信,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.社交类app排行榜前十名偏玩手游盒子分享十大社交类app排行榜前十名手机应用,编辑为您推荐手机社交类app排行榜第一名到前5名到前十名的应用。找社交类app有哪些、社交类app哪个好用,上偏玩手游盒子https://m.pianwan.com/s/zj-3133000
2.社交软件10大品牌排行榜最新名单公布→十大品牌网入榜《2024年CNPP社交平台十大品牌榜中榜名录》的有:微信、抖音、腾讯QQ、哔哩哔哩、快手、微博、小红书、知乎、豆瓣、百度贴吧等,社交平台10大品牌排行榜由CNPP品牌榜中榜大数据「研究院」和CN10排排榜技术「研究院」通过资料收集整理,并基于大数据统计及人为根据市场和参数条件变化的分析研究专业测评而得出,是大数据https://www.cnpp.cn/focus/36556.html
3.微信社交软件介绍→微信社交网站微信社交媒体微信是腾讯公司于2011年1月21日推出的一个为智能终端提供即时通讯服务的免费应用程序,微信支持跨通信运营商、跨操作系统平台通过网络发送免费(需消耗少量网络流量)语音短信、视频、图片和文字,同时,也可以使用通过共享流媒体内容的资料和基于位置的社交插件“摇一摇”、“朋友圈”、”公众平台“、”语音记事本“等服务https://www.maigoo.com/brand/29360.html
4.社交媒体平台应用的现状与发展趋势分析综上所述,社交媒体平台应用具有多元化的发展前景,各类平台之间互相促动,不断提升着整体用户体验。在接下来的讨论中,我们将进一步深入探讨这些应用的具体现状及其未来发展趋势。 社交媒体平台的定义与分类 社交媒体平台是指那些允许用户创建、分享内容并与其他用户进行互动的在线应用或服务。这些平台不仅仅是信息传播的渠道,https://blog.csdn.net/tiangang2024/article/details/144341833
5.工业品这种类型获取流量的渠道有哪些?3、免费B2B平台、分类信息网 4、付费B2B平台5、自建博客或第三方博客专栏 6、社交平台微信、头条、抖音 7、所在行业国内线下专业展会 01、百度SEO(百度关键词排名优化) 百度关键词排名优化,即百度SEO,就是优化企业的网站在百度上用户搜索相关关键词的排名。 https://lusongsong.com/reed/15682.html
6.剪映是哪个公司旗下的产品剪映可以与哪些社交平台集成剪映可以与哪些社交平台集成 可以与TikTok、抖音、微博等多个社交平台进行集成,用户可以直接将剪映制作的视频分享到这些平台上。我们可以将已有的抖音账号登陆在剪映中,到最后剪辑完成发布时,即可选择直接同步发布至抖音平台中,也可保留在本地,且我们在抖音中收藏的作品、音乐、模板等,在剪映中都可以直接套用出来,非https://mydown.yesky.com/news/2147452098.html
7.蕃茄酱外贸好做吗?海外市场规模如何?需要哪些标准或认证?出口退税总之,要在外贸出口中找到分销商和客户,并进行有效的推广,你需要建立专业的网站和社交媒体账号,参加行业展会和展览,寻找贸易商和代理商,利用电子商务平台,以及参与行业协会和组织。通过这些方法,你可以扩大你的市场份额,增加销售量,并取得成功。 如有任何问题,欢迎微信联系我们。 https://www.leadscloud.com/fanjiajiangwaimaohaobei/
8.目前常见的新媒体包括哪些(主流的新媒体平台有哪些)社交类新媒体平台让人们的交流不受时间和空间的约束,已渗透到人们的日常生活之中,因为可以和用户很好的互动交流,用户粘性很强。 1、 微信平台 --微信,是一个生活方式。 截至2022年1月,微信已超过10亿人使用,是目前拥有用户最多的社交平台。微信平台包括微信公众号、微信群、微信小程序、微信小商店等。 https://www.niaogebiji.com/article-130426-1.html
9.软文发布平台之个人社交类平台的分类最常见的个人社交类平台主要有 QQ 、微信及微博这三大平台。它们都是人们日常生活中使用最为频繁的通信社交工具,但三者之间在用户群体、传播范围及社会关系强度等方面存在着一些差异。 1.主要用户群体不同。QQ的主要用户群体是“95后”的年轻群体,以学生和三四线城市的上班族为主;微信的用户群体以一二线城市的白领为https://maimai.cn/article/detail?fid=1645141361&efid=P1eDQAa_bA0cqKqpy3j8Ag
10.什么是社交媒体?社交媒体平台有哪些这些年来,“社交媒体”这个词频繁地出现在我们的日常生活中,大家熟知的脸书、推特、微信公众号、博客等等,都属于社交媒体的范畴,但它们为什么叫“社交媒体”,说实在话很长时间我真不清楚。下面我们一起来了解一下,啥是社交媒体,社交媒体平台有哪些? 社交媒体的定义 https://jinengtisheng.com/16888.html
11.我的社交平台归类,整理回到此刻要整理的内容——我的社交软件 书写类: 1. 豆瓣:最爱的,最轻松的,最治愈的,最欢乐的,最松弛的恶,具有强大学习驱动力 的好平台,随时都可以倾诉,吐露心绪的,记录生活的,记录成长,苦闷,痛苦,独乐乐的,在思考,在努力,在自愈的无人问津的没有负担的书写平台。在一个人的舞台,黯然,愉快,努力,失落,惆怅https://www.douban.com/note/858234373/
12.深度复盘,优秀网页设计的七个元素网站运营主要做的就是用户运营,围绕着用户运营有分成几种模式: 小企业网站运营 主要针对小企业或者创业公司,他们用户体量小,访问量也不高,对用户运营的要求就是解决用户问题,围绕用户开展服务即可。 信息分类网站或者社交平台 这类用户运营需要具备一些商务和资源能力,比如到了某个时间节点需要推动一些热点事件,用户运营https://pixso.cn/designskills/youxiuwangyesj/
13.国外社交媒体媒体包括哪些?海外社交媒体平台推荐国外社交媒体媒体包括哪些?海外社交媒体平台推荐 随着互联网的发展和普及,社交媒体是人们日常生活中不可或缺的一部分。在海外,有很多时兴社交平台,为用户提供交流、分享和沟通的平台。 1. Facebook Facebook是一个时兴社交平台,有着数十亿活跃用户。你可以在软件上共享文字、相片、视频等内容,https://www.ipaylinks.com/information_details.php?id=9414
14.社交电商头部平台有哪些,2020年2月社交电商TOP30榜单出炉,微三云一、2020年2月社交电商TOP30榜单 一、综合类 拼多多: 创立于2015年9月,2018年7月,拼多多在美国纳斯达克证券交易所正式挂牌上市。创立3年,汇聚4.185亿年度活跃买家和360多万活跃商户,平台年交易额超过4716亿元。2018年12月,拼多多推出聚焦中国中小微制造企业成长的“新品牌计划,将扶持1000家覆盖各行业的品牌工厂。 http://dongguan.11467.com/info/7768354.htm
15.抖音等级号购买平台网站有哪些?快来了解一下吧购买抖音等级账号的平台和网站有哪些? 作为抖音用户,您可能希望提升自己的账号等级,以便在抖音社交平台上获得更多的关注和认可。虽然抖音不提供账号等级的直接购买,但网上有一些第三方平台声称可以帮助用户购买抖音账号等级。以下是一些常见的抖音账号购买平台网站,供您参考: http://www.bjhwtx.com/h-nd-189149.html
16.ShopifyTemuTikTok……主流跨境电商平台有哪些?本章节为渠道篇,带领商家分辨自身的业务特点,了解目前主流跨境电商渠道之间的区别。渠道篇分成两个部分:上篇,带领商家认识自身的业务类型,同时简单介绍跨境电商的基本分类和主流平台;下篇,解析不同渠道的优缺点,结合商家的经验和行业现状,为新手卖家提供渠道选择建议。 https://academy.sinoclick.com/article/1000001533
17.Contents/premium.mdatmaster·Newslab2020/Contents·GitHub美国媒体闭嘴了吗?它们的报道有没有问题? TikTok成为重要的新闻信息来源; 美国阴谋论与中国舆论场的互动。 652 社交媒体平台必定走向“垃圾化”? 2023/2/16 “流量扶持”揭下平台“中立性”的面具; 平台“垃圾化”三部曲; 流量分配和平台权力。 651 ChatGPT与媒体 https://github.com/Newslab2020/Contents/blob/master/premium.md
18.分类管理大师!李现不同平台晒腹肌照华语电影网9月13日,李现在社交平台发布了一张腹肌照,并配文:“快瘦没了”,照片中,李现头戴棒球帽,赤裸上身八块腹肌醒目,引发热议。稍后,他又在绿洲晒出了同款照片,不同的是,他用扎染风图片,将自己的腹肌打了码。粉丝纷纷调侃:“平台分类管理大师”“怎么还有两幅面孔”。https://www.1905.com/m/news/touch/1480237.shtml
19.微信微商16种销售模式有哪些?微信运营QQ可以说每个人上网的人都有QQ号,而QQ空间一般是我们发布和看一些朋友分享内容的地方。现在的QQ空间已不是简单的社交平台了,而是一个卖货,打广告的场所。不过,QQ空间卖货已经被很多人认可了,像美丽说,小米手机等,他们都利用QQ空间来卖货。 卖产品或者卖服务,我们都可以利用QQ来当作联系方式,当用户加了你的QQ号http://www.heleasy.com/News/4083.html