初探长连接 OR 短连接

做了很久的web开发,一直专注于增删改查,对于即时通讯所使用的技术一无所知。因此,有很多问题存在心里最终形成了一个很大的问号,在即时通讯的聊天中,前后端如何收发信息呢?基于web的即时通讯和app端的即时通讯会不会有什么不同呢?

通过做app的朋友了解到,他们是轮询请求后台服务器的,每隔3S、5S就请求后台一次。哇,这会不会太频繁?用户多了怎么办?一万个用户,3S、5S请求一次,一个小时是多少次呀?用户再多一点呢,这是不可思议的事情,估计服务器要崩了吧......

此时的服务器如何应付的了这种频繁请求?曾经看过一个WEB端的即时聊天,是使用WEBSOCKET做的,为何使用WEBSOCKET去做,WEBSOCKET又为何物?

带着这些个疑问,想着以前加过的那么多牛群,抛出了这个问题。把这个问题抛到了五六个群里,有一个群是做wex5的群,wex5是开源并且免费使用的APP开发工具,采用H5+CSS3+JS标准技术,回想当初自己对这个技术做过调查的,但只是调查了一下,并没有往深处去。

这个群也是在调查时加的,群里的伙伴,估计都是做wex5开发的,会对我提出的问题感兴趣吗?犹豫了一下,本不想往这个群抛的,但想想还是抛一下吧,万一有人回答呢。

最后的结果是,只有这个让我最犹豫的这个群起了水花,其他群都默默无闻,心里很是感叹,他们遇到问题,自己也没有少拿主意,自己遇到问题真是冷清呀,或许他们也不会吧。

抛出的这个问题确实涉及到了基础,没有点扎实的功底根本搞不懂,市面上很多技术会傻傻地让你不知道使用哪一个?先听听他们的谈论,心里终于有了点底,计算机网络原理、计算机网络技术没有白学呀!

如果没有学过这两门课,很可能会听不懂Q友们说的话;学过这两门课,听听他们的讨论,可以很快做出抉择,这就是区别吧。

HTTP是客户端浏览器和WEB服务器之间的应用层协议,也就是浏览器访问web服务器上的超文本信息时使用的协议。自己一直以来做的项目就是这种,放在服务器上的。

项目上线后,给客户一个URL地址,客户就可以在浏览器的地址栏上输入这个地址,访问服务器上的项目。如果开发的是管理后台,则还需要给用户创建账户,分配密码等事项。

访问WEB项目的主要途径是浏览器,之前还需要为项目申请域名,部署服务器,最后完成项目上线。上线后的项目,只要知道域名,就可以根据用户自己的权限进行访问了。

由于这些都是在广域网里进行的,所以这些项目都统称为WEB(World Wide Web的缩写,全球广域网、万维网的意思)开发。即时通讯,像微信网页版也是基于浏览器的的,也可以称作是WEB开发。

在多个QQ群里抛出的问题是,即时通讯中的聊天技术除了socket还有哪些其他的技术。WeX5里的群友们,说法各异。虽说大家都做软件编程这一行,但是能把做的说明白,原理讲清楚也是件不容易的事情。

有的Q友说,使用MQ,有的说使用长连接,群主说MQ是基于HTTP协议的,还是SOCKET的;也有的Q友使用MQ做的朋友圈,而且还扯到分布式上面去了,额.......还要一个Q友,长连接、轮询......,服务器端还扯到了轮询,这....... 当然,群主推荐了一个不错的开源框架Tio,参考网址:https://www.t-io.org/?qm=1

通过Q友的七嘴八舌,过滤出这么几个关键字,长连接、短连接、MQ、SOCKET、MQTT、Netty、Tio。长连接、短连接要从概念上突破,理解了概念,就没有什么问题了。什么是长连接,什么是短连接,他们之间的区别在哪里?

还记得计算机网络的层次结构吗?这是在面试时经常遇到的题目,当然,熟练的同学闭着眼睛都能够背出来,物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

HTTP协议是属于应用层的,数据传输属于传输层。传输层有两种协议,一种是TCP协议,一种是UDP协议。TCP协议是可靠的、面向连接的协议。UDP则相反,是不可靠的,在传输前不需要建立连接。

来自自学教材

TCP建立连接需要三次握手,先是请求方建立连接,然后接收方确认连接,最后请求方再确认连接。

TCP释放连接也是三次握手,先是请求方发送接收不到数据的通知,然后接收方应答并通知数据已经传输完毕,最后请求方应答数据接收完毕。

来自自学教材

就这样,浏览器每和服务器交互一次,就要进行不少于六次的握手;浏览器每发起一次请求,服务器都要做出相应倍数的回应,需要建立连接、数据传输、释放连接。

对于一般的增删改查之类的数据交互,可以这样,建立连接、数据传输、释放连接,这样的连接方式被称之为短连接。

换个场景,即时通讯,是个交互非常频繁的动作,如果也这样不停地建立、释放连接,对于服务器来说,是大压力大损耗,这时就需要使用长连接,建立连接之后,连接保持一定的时间,在这段时间内传输数据,就不需要再次浪费资源建立连接,只需传输数据即可。等超时后,再释放连接。

这样做的好处,就是减轻服务器的访问压力。具体使用哪种,要视应用场景而定。之前做的web开发,数据库访问是基于长连接的,其他的都是短连接。websocket是基于长连接的,固用来做即时通讯。

所以呢,对于大家的七嘴八舌,一定要有足够的分辨力才能分出真假了。Q友们给出的答案,也要花时间调查一下,从概念上,从理论上,逐一了解,最后才能知道哪款是适合自己的。

曾经用MQ做过一个DEMO,模拟聊天室,或许是经验不足,竟然没有模拟成功,总感觉消息中间件用在聊天上,不合适,更或许是自己还没有找到合适的方法吧。

这样分析下来,长连接和短连接都是针对TCP协议的,HTTP协议是基于TCP协议之上的,像聊天这样的业务场景,根据网友的实战经验都是使用长连接,要看一项技术是不是适合这个场景,还要看基于什么协议,长短连接是否合适等等因素。

写了这么多,满脑子概念,快成浆糊了,还是找个DEMO写一写,体验一样长连接和一般的短连接有什么不同吧。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容