当前位置:首页 > 搭建教程 > 正文内容

开发即时通讯系统常见的短连接和长连接是什么意思?即时通讯源码

im源码1年前 (2024-01-08)搭建教程320

那企业选即时通讯软件到底是SaaS好还是私有部署好呢?




按照常规,应该详尽地列出两种类型的是利弊对比。例如SaaS运维省心省力,私有化本地部署以及后续升级需要投入人力物力。但是这些所谓的利弊是我们的选择标准吗?




认为,更应该从企业自身的安全管控需求出发来进行选择。如果内部日常沟通的信息关系企业发展命脉, 必须保证数据掌控在自己手里, 不放心交给第三方保管。就不用纠结是否需要投入人力物力去运维了吧。




当然不放心不代表第三方不安全,只是连这个风险也要扼杀在摇篮中。 另外私有部署只不过是开始, 后续的运维管理肯定不能掉以轻心 。




同时即时通讯管理的只是信息安全管控的一部分,并不代表它管控好了就能高枕无忧,需要对涉及的其他的各个环节都进行管控,才能降低风险。




短连接和长连接


即时通讯使用的是长连接,这里我们介绍一下短连接和长连接。




1 短连接


客户端和服务器每进行一次通讯,就建立一次连接,通讯结束就中断连接。






HTTP是一个简单的请求-响应协议,它通常运行在TCP之上。HTTP/1.0使用的TCP默认是短连接。




2 长连接


是指在建立连接后可以连续多次发送数据,直到双方断开连接。






HTTP从1.1版本起,底层的TCP使用的长连接。


使用长连接的HTTP协议,会在响应头加入代码:Connection:keep-alive




2.3 短连接和长连接的区别


2.3.1 通讯流程


短连接:创建连接 -> 传输数据 -> 关闭连接 长连接:创建连接 -> 传输数据 -> 保持连接 -> 传输数据 -> …… -> 关闭连接




2.3.2 适用场景


短连接:并发量大,数据交互不频繁情况


长连接:数据交互频繁,点对点的通讯


3 通讯方式


方式 说明


短连接 我跟你发信息,必须等到你回复我或者等了一会等不下去了,就结束通讯了


长连接 我跟你发信息,一直保持通讯,在保持通讯这个时段,我去做其他事情的当中你回复我了,我能立刻你回复了我什么,然后可以回应或者不回应,继续做事


3 websocket协议


一、WebSocket是什么?


WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。




何谓全双工:全双工(Full Duplex)是通讯传输的一个术语。双方在通信时允许数据在两个方向上同时传输,它在能力上相当于两个单工通信方式的结合。全双工指可以同时进行信号的双向传输。指A→B的同时B→A,就像是双向车道。


单工就就像是汽车的单行道,是在只允许甲方向乙方传送信息,而乙方不能向甲方传送 。


参考资料:https://baike.baidu.com/item/%E5%85%A8%E5%8F%8C%E5%B7%A5/310007?fr=aladdin




在 WebSocket中,浏览器和服务器只需要完成一次握手,就可以创建持久性的连接,并进行双向数据传输。




在推送功能的实现技术上,相比使用Ajax 定时轮询的方式(setInterval),WebSocket 更节省服务器资源和带宽。




服务器向客户端发送数据的功能是websocket协议的典型使用场景






二、为什么需要WebSocket?


我们知道,传统的HTTP协议是无状态的,每次请求(request)都要由客户端(如 浏览器)主动发起,服务端进行处理后返回response结果,而服务端很难主动向客户端发送数据;这种客户端是主动方,服务端是被动方的传统Web模式 对于信息变化不频繁的Web应用来说造成的麻烦较小,而对于涉及实时信息的Web应用却带来了很大的不便。




因此,随着HTML5的诞生,一种新的通信协议应运而生—WebSocket,他最大的特点就是服务端可以主动向客户端推送消息,客户端也可以主动向服务端发送消息,实现了真正的平等。




**举个例子:**如带有即时通信、实时数据、订阅推送等功能的应用。在WebSocket规范提出之前,开发人员若要实现这些实时性较强的功能,经常会使用折衷的解决方法:ajax轮询(最原始的实现实时Web应用的解决方案)




**ajax轮询的原理:**ajax轮询的原理非常简单,让浏览器隔个几秒就发送一次请求,询问服务器是否有新信息。明显地,这种方法会导致过多不必要的请求,浪费流量和服务器资源。




场景再现:




客户端:有没有新信息(Request)


服务端:没有(Response)


客户端:有没有新信息(Request)


服务端:没有。。(Response)


客户端:有没有新信息(Request)


服务端:你好烦啊,没有啊。。(Response)


客户端:有没有新消息(Request)


服务端:有啦,给你。(Response)


客户端:有没有新消息(Request)


服务端:。。。。。没。。。。没。。。没有(Response) ---- loop


1


2


3


4


5


6


7


8


9


10


websocket的原理:当服务器完成协议升级后(HTTP->Websocket),服务端就可以主动推送信息给客户端啦。




场景再现:




客户端:我要建立Websocket协议,需要的服务:chat,Websocket协议版本:17(HTTP Request)


服务端:确认,已升级为Websocket协议(HTTP Protocols Switched)


客户端:麻烦你有信息的时候推送给我噢。。


服务端:好的,有的时候会告诉你的。


服务端:balabalabalabala


服务端:哈哈哈哈哈啊哈哈哈哈


服务端:笑死我了哈哈哈哈哈哈哈


1


2


3


4


5


6


7


三、WebSocket其他特点如下:


(1)建立在 TCP 协议之上,服务器端的实现比较容易。




(2)与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。




(3)数据格式比较轻量,性能开销小,通信高效。




(4)可以发送文本,也可以发送二进制数据。




(5)没有同源限制,客户端可以与任意服务器通信。




(6)协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。




四、创建WebSocket对象


浏览器通过 JavaScript 向服务器发出建立 WebSocket 连接的请求,连接建立以后,客户端和服务器端就可以通过 TCP 连接直接交换数据。当你获取 WebSocket 连接后,你可以通过 send() 方法来向服务器发送数据,并通过 onmessage 事件来接收服务器返回的数据。




// url, 指定连接的 URL


// protocol 是可选的,指定可接受的子协议。


let Socket = new WebSocket(url, [protocol] );


1


2


3


五、WebSocket属性


  假设我们创建了一个Socket对象


1


属性 描述


Socket.readyState


只读属性 readyState 表示连接状态,可以是以下值:




0 - 表示连接尚未建立。




1 - 表示连接已建立,可以进行通信。




2 - 表示连接正在进行关闭。




3 - 表示连接已经关闭或者连接不能打开。




Socket.bufferedAmount 只读属性 bufferedAmount 已被 send() 放入正在队列中等待传输,但是还没有发出的 UTF-8 文本字节数。


扫描二维码推送至手机访问。

版权声明:本文由创想互联IM聊天系统发布,如需转载请注明出处。

本文链接:https://im.fofo.club/blog/post/43.html

分享给朋友:

“开发即时通讯系统常见的短连接和长连接是什么意思?即时通讯源码” 的相关文章

云信IM即时通讯系统开发以及功能介绍

云信IM即时通讯系统开发以及功能介绍

功能介绍:新增 游客登录/一键注册。限制IP注册多少个号等等,具体联系客服看后台演示。支持文字、表情、图片、语音、单聊、群聊、在线离线、撤回、已读未读、红包、消息群发、消息转发、内嵌外链、敏感词等完备的IM功能。单聊:快速实现私信单聊,具备图片、发送语音、动态表情、发送小视频、红包等各种通信能力。群...

IM即时通讯APP,源码搭建大概需要多少钱?

IM即时通讯APP,源码搭建大概需要多少钱?

社交类IM即时通讯软件的开发费用是一个动态变化的过程,没有固定的价格。费用取决于所需功能的复杂程度和开发的工作量。根据即时通讯的功能模块的不同,价格也会有所差异。一般常见的即时通讯功能包括单聊、群聊、红包、转账、朋友圈、语音、视频等,这些功能的即时通讯软件的价格较低,源码的价格通常在6000-100...

叫你搭建一套在线聊天软件,手把手教你搭建在线语聊程序

叫你搭建一套在线聊天软件,手把手教你搭建在线语聊程序

在线聊天软件彻底改变了我们的沟通方式,实现了实时对话并促进了跨平台的连接。在本文中,我们将探讨在线聊天软件背后的功能、优点和技术,强调其在当今数字环境中的重要性。了解在线聊天软件在线聊天软件是指通过互联网进行即时消息传递和交流的应用程序或平台。这些软件解决方案使个人、团体和组织能够有效地进行实时对话...

php即时通讯解决方案-请问PHP能否实现即时通讯?

php即时通讯解决方案-请问PHP能否实现即时通讯?

最简单的说,它可以定期刷新,比如10秒的间隔。新数据,反馈到前台,没有新数据等待下次刷新。 但实际上在应用中需要考虑消息的及时性、服务器压力等。php即时通讯。 可以用comet来设计 节点。js、socketphp即时通讯系统。 总之,当你真的想为自己的项目开发im系统时,这是一个大项目 如何开发...

即时通讯为什么要tcp加速产品tcp动态加速解决方案!

即时通讯为什么要tcp加速产品tcp动态加速解决方案!

需求和现状行业需求近年来,随着互联网在全球的快速发展和普及,网民数量的增加,生活中各方面对互联网依赖的增强,带来互联网访问量的爆发性增长。 并且随着web页面内容元素越来越丰富,对交互延时的要求, 给服务端的并发能力和处理能力提出了新的要求。 横向上可以增加机器来提高web服务的可用性和解决并发量的...

如何信息共享的即时通讯系统及方法理论?

如何信息共享的即时通讯系统及方法理论?

1、 一种实现用户信息共享的即时通讯系统, 包括多个客户端及至少一个通讯服务器, 所 述多个客户端连接所述通讯服务器, 其特征在于, 所述实现用户信息共享的即时通讯系统还 包括:至少一个全局服务器; 控制服务器; 以及查询服务器, 所述多个客户端通过所述通讯服务器分别与所述查询服务器及所述全局服 务...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。