关于即时通信:IM开发者的零基础通信技术入门十二上网卡顿网络掉线一文即懂

【起源申明】本文援用了微信公众号“鲜枣课堂”的《上网慢?常常掉线?这篇文章通知你该怎么办!》文章内容。为了更好的内容出现,即时通讯网在援用和收录时内容有改变,转载时请注明原文起源信息,尊重原作者的劳动。1、本文内容概述对于不太理解网络通信的人来说(包含开发者),可能会常常碰到上面这些问题:“手机(电脑)上网常常掉线,是为什么?”“手机(电脑)上网总是很慢,看个抖音都很卡,是怎么回事?”……想要搞清楚这些看似简略的问题,其实并不容易。归根到底的起因,就是因为上网牵扯到的技术和环节太多,容易呈现问题的中央也很多。即便是老司机,也有可能被难住。对于即时通讯网的开发者来说,为了更深刻地搞清楚这些常见的网络问题,很有必要系统地理解导致这些问题的方方面面。本文将具体介绍生存中遇到的常见网络问题,及可能的解决办法,虽说是一篇技术文章,但内容将判若两人地通俗易懂,简略实用。废话不多说,咱们直入主题。 技术交换: 挪动端IM开发入门文章:《新手入门一篇就够:从零开发挪动端IM》开源IM框架源码:https://github.com/JackJiang2011/MobileIMSDK(备用地址点此)(本文已同步公布于:http://www.52im.net/thread-2406-1-1.html) 2、基础知识注释开始之前,几个基本知识须要先阐明一下。(如果是老司机,请跳过本节。如果是零根底,请认真浏览。)咱们首先来解释一下,到底什么是“网速慢”。网速慢,就是上网速度慢。上网,就是上互联网。互联网,就是因特网(Internet)。对于上网的实质,给大家看一个示意图:手机(电脑),首先通过有线信号(网线、光纤)或无线信号(WiFi、基站),连到运营商(挪动、电信、联通)的网络里。而后,运营商会把咱们的数据,送到互联网。同时,把互联网的数据,送给手机(电脑)。什么是数据呢?文字、声音、图片、视频(电视剧、电影等),这些都是数据:数据的大小,是有度量单位的。单位有两种,一种是比特(bit),一种是字节(byte)。它们的换算关系,是1字节=8比特(1 byte = 8 bit)。因为bit和byte都是b结尾,所以,为了辨别,把byte简写成大写的B。咱们书面语上,把B叫做“大B”,把b叫做“小b”。bit是一个很小的单位。通常,一张图片的大小,就有40000000bit。所以,为了不便,咱们就发明了更大的单位:b、Kb、Mb、Gb、Tb。(就像长度有毫米、厘米、分米、米一样。)它们之间的换算关系如下:Byte也是一样,也有B、KB、MB、GB、TB:大B和小b,都是数据的大小单位。如果是网速(数据传输速率)的话,就是每秒多少比特(bit/s)或每秒多少字节(byte/s)。因而,大家判断网速,肯定要先搞清楚应用的是什么单位。例如,中国电信的200M宽带,其实是指200M bit/s,实际上,最高速度只有200÷8=25MB/s。再例如,你的千兆网卡,是指1000M bit/s,也就是1000÷8=125MB/s。还有大家当初应用的4G LTE手机,实践峰值速率是150M,也是bit/s,实际上,也就是150÷8=18.75MB/s。(这只是实践上的最高速度,人一多,速度就达不到。)好了,搞清楚这些,咱们开始真正进入注释。 3、上网=用水管方才说了,所谓上网,就是手机拜访互联网上的数据。这些数据,都在他人公司的电脑(服务器)上。也就是说,网络通信,就是把你的手机和他人公司(例如腾讯、阿里、优酷)的服务器之间,连一个通道。如果这个通道有任何一处呈现问题,那么,整个通道的速率,就会呈现问题。就像一根水管,它最细的中央,决定了整个水管的流速。呈现问题导致的结果,就是——音讯发不进来(或收不到),音乐或视频播放会进展或含糊,游戏也会进展,甚至重连。这就影响了性能的失常应用,影响了你的体验还有情绪:因而,解决网速问题,说白了,就是找到这根水管的最窄处,把它拓宽。解决断网问题,也是这个情理,找到水管断掉的地位,把它接上。有的人会埋怨网速:“我家不是百兆光纤嘛,怎么还会卡顿?”。其实就是搞错了问题的方向——他没有找水管的最窄处,而是强调本人水管的最宽处。 4、挪动通信?有线宽带?解决网络问题的第一步,就是先判断——你到底是用的什么上网形式?后面我提到,之所以咱们能上网,是应用了运营商提供的“电信服务”。这种服务,次要分为两种:1)一种是卖手机SIM卡给你,你把卡插入手机,进行通信。这种叫挪动通信服务;2)另一种,是给你家里拉根宽带,可能是网线,或者是光纤(当初基本上是光纤为主)。而后你通过这根线上网。这种,叫有线宽带服务。包含固定电话,还有iptv,也是属于有线通信服务的领域。▲ 电信徒弟调测iptv(iptv其实就是上网看电视)这两种上网形式(挪动通信和有线宽带),问题排查的办法不尽相同。所以,应该首先搞清楚本人到底用的是什么形式。留神:大家所熟知的WiFi,尽管看上去也是在“挪动”中通信,然而实质上属于有线宽带(待会咱们会阐明)。 5、挪动通信上网问题的排查咱们首先说说挪动通信上网的问题排查。挪动通信,就是通过基站,提供网络信号(对于基站更具体的常识,请见:《IM开发者的零根底通信技术入门(六):挪动终端的接头人——“基站”技术》)。▲ 基站而后你的手机通过这个信号,连入运营商的网络,从而拜访互联网。大家都晓得,如果你应用挪动通信上网或打电话,网络不好,通常会体现为:你手机上的信号标记,格数只有1格,甚至是无信号。信号好,上网就快。信号不好,上网就慢,甚至不能上网。决定这个信号强弱的,就是运营商的基站和天线。基站越多,天线和你之间的间隔越短,或者基站和手机之间的障碍物越少,你的手机信号就会越好。如果你所在的中央手机信号不好,怎么办呢?答案是打客服电话投诉。一次不行就多打几次。如果还是不行,就拨打工信部的投诉电话:12300。▲ 工信部是运营商们的下级主管部门很多人问我,是不是能够自行装置信号放大器或者中继器的形式,增强所在区域的运营商信号?答案是——不行。任何集体或单位都没方法中继或增强运营商的基站信号。这次要是为了保障公众的通信安全。你只能让运营商本人来解决。他们的方法,无非是多装置几个基站,或微基站。如果你看到信号格数是满的,但始终感觉速度很慢,能够装置软件进行网速测试。例如“speedtest”这个软件,就能够用于测速。▲ Speedtest软件界面当初咱们所处的4G LTE时代,手机上网测速如果达到30-40Mbps(留神单位是bit/s,bps)以上,就算是不错的了。如果信号格数满的,但测速值很低,仍然能够打运营商客服电话投诉。留神:如果你身边的用户(必须是雷同运营商),测速后果很好,那么有可能是你的手机存在问题。这种,就属于“用户侧”问题。所谓用户侧,也就是手机(电脑)这一侧。绝对应的,运营商那边,叫做“网络侧”。如果手机上网有问题,第一件事,就是问问身边的人,是否存在同样的问题。当然,也有可能是你的SIM卡有问题,或者运营商那边,把你的数据设置错了,导致问题。通常来说,用户侧出问题的概率显著高于网络侧。如果网络侧出问题,就是大面积问题,大家都无奈应用网络,很容易觉察。 6、用户侧问题的排查如果确认了是本人的手机存在问题,就须要进一步排查了。手机呈现卡顿,首先要判断分明的,就是——到底是手机卡顿,还是网络卡顿?当初新出的手机,配置都比拟高,对于绝大部分软件(例如微信、爱奇艺、百度地图等)来说,都是能够晦涩运行的。(对手机配置要求高的,次要是一些游戏软件。)如果是几年前购买的手机,可能会存在手机卡顿的故障。还有安卓手机,工夫久了就会变卡,这也是产品自身的问题,没方法的(当初安卓手机性能很强,配置很好,这个问题不像以前那么显著)。电脑也是如此。如何判断是手机卡顿,还是网络卡顿呢?一般来说,如果是手机卡,那么次要体现为:1)关上软件迟缓,半天没有反馈;2)点击按钮时,屏幕卡顿;3)运行游戏时,图像不晦涩。如果是网速卡,通常会有一个很重要的符号,那就是缓冲圆圈。▲ 相似这样的这个圆圈会不停地转,而后可能还会提醒你:“正在缓冲,请期待,Loading”,之类的。(缓冲,就是期待服务器过去的数据。)如果是手机卡顿,解决方案有两个:1)重置手机,也就是初始化手机,通过手机设置,复原成最开始的样子(数据会全副失落,要记得备份);2)购买新的手机。留神:大家别急着去买新手机,如果只是运行某个程序有卡顿,并不一定是你的问题。也有可能是这个程序的服务提供商那边存在问题。例如它们的服务器挂了,它们的机房断网了,之类的。▲ 服务商的机房 7、有线宽带上网问题的排查方才说了挪动通信问题和手机本身问题。接下来,咱们看看有线宽带上网问题。这个外面的问题,就多了去了。对于有线宽带来说,运营商只是提供了一根线,也就是一个“水龙头”。如果只是拿一台电脑间接接它,显然太节约了。所以,每个人家里,都会装置一个路由器,将一个水龙头,变成好多个水龙头。以前的路由器,只能分出多根网线。当初的路由器,都是无线路由器,除了分出网线之外,还能够收回无线信号,这也就是大家所熟知的——WiFi。▲ 常见的家庭网络组成一般来说,有线宽带的网络信号品质,要比挪动基站更为稳固,速率也要更快一些。(无线信号容易受障碍物阻挡,也容易受烦扰。)再加上手机上网须要应用流量,费用更贵。所以,大家都喜爱用WiFi,喜爱用光纤宽带上网。然而,光纤宽带也不肯定都很快。不同省份和城市之间,不同的运营商之间,差别会比拟大。而且,有线宽带也分专享宽带和共享宽带,如果是共享宽带,好几家一起用的,高峰期就会很慢,不倡议应用。(当然,共享宽带价格便宜。)很多用户,贪便宜,装了不好的宽带,后果速度还不如应用手机流量上网。应用有线宽带上网,最重要的,就是你的无线路由器。无线路由器!无线路由器!无线路由器!重要的货色说三遍!目前市面上的无线路由器,牌子很多,价格差异很大,品质差异也很大。▲ 各种品牌的无线路由器我很庄重地通知大家,请不要应用一两百块钱的那种低端路由器。哪怕它外观很漂亮、领有各种性能(都是噱头)。以我的教训,路由器的外观越低调,反而越靠谱。当初咱们所处的这个信息时代,网络的品质决定了生存的品质,所以,多花点钱,买个好的无线路由器,很有必要。好的无线路由器,运行更加稳固,不容易掉线、死机,网速的抖动也不会大。而且,好路由器在信号和辐射之间的均衡,也管制得更好。▲ 例如华硕、网件的无线路由器,就做得不错另外,请大家留神,很多无线路由器号称是千兆路由器,但实际上是玩的“文字游戏”。当初的无线路由器,能够同时提供两个无线网络,别离是2.4GHz频段和5GHz频段。所以个别你手机能搜到两个无线网络,名字相似这样:▲ 有一些WLAN网络,名字以“_5G”结尾商家宣传无线路由器的时候,有一个潜规则——它所说的XX兆,实际上是两个无线网络的实践峰值速率相加。例如这个路由器,所谓1200M,就是300M+867M:▲ 1200M≈300M+867M▲ 市售路由器宣传速率和理论速率对照表这显然是不合理的——你的手机不可能同时连两张WiFi网络,更不可能网速进行叠加,更更不可能达到极限速度。然而,所有的路由器厂家都在这么做。更须要留神的是,当初的很多所谓“千兆”路由器(尤其是低端型号),网线物理端口都是百兆的,基本不是千兆。▲ 进来的口(WAN口)是千兆的,可是外部的口(LAN口)是百兆的也就是说,如果你装置运营商的“千兆宽带”,但应用的是这样的路由器,你基本施展不出千兆的能量。而且,事实上,就算你用了千兆物理网口的路由器,如果网线没有达到规范,都很难达到千兆速率。▲ 网线对网速的影响,也很大所以,对绝大部分用户来说,齐全没有必要谋求所谓“千兆宽带”。两百兆的宽带,相对足够了。如何判断有线宽带的问题点在哪里呢?最简略的方法,就是间接拿电脑,接上网线,连在运营商的光猫上,而后进行测速。▲ 家庭宽带最简测速模型测速软件很多,简略一点的话,腾讯电脑管家的工具箱—测试网速工具,就能够进行测速。如果测速后果不能达到运营商承诺的值,那么,请拨打客服电话,让运营商工作人员上门解决。测速的时候须要留神,倡议选本地或左近的测速点。不要选异地或别的运营商的测速点。例如,你是南京电信的用户,那么,不要抉择北京电信或者四川联通的测速点。留神:当初运营商的光猫基本上都带无线WiFi性能,然而我倡议不要应用。因为光猫的WiFi性能很烂,很容易出问题。我倡议专门购买无线路由器,用路由器进行PPPOE拨号。光猫的话,只用用光纤拨号性能就好了。此外,倡议关掉光猫的Wi-Fi,缩小辐射,也缩小对自家无线路由器的信号烦扰。如果测速失常,那么,要么是无线路由器的问题,要么是手机(电脑)的问题。如果家里多部手机(电脑)都工作失常,而只有某部手机(电脑)网速异样的话,基本上是这个手机(电脑)的问题。还是倡议采纳替换法进行排查解决。切实不行,就只能找手机(电脑)的厂家或业余培修人员了。好啦,以上就是明天文章的全部内容。其实,大家也应该看明确了,尽管网络问题纷繁复杂,然而,只有逻辑思路清晰,依照程序逐个排查,就不难找到起因。平时开发应用程序,或向客户、产品经理、老板解释相干网络问题时,也更有根据、更有底气了。心愿这篇文章可能给大家带来帮忙,感激大家的急躁观看,咱们系列文章的下篇再见咯! 8、本系列文章目录《IM开发者的零根底通信技术入门(一):通信替换技术的百年发展史(上)》《IM开发者的零根底通信技术入门(二):通信替换技术的百年发展史(下)》《IM开发者的零根底通信技术入门(三):国人通信形式的百年变迁》《IM开发者的零根底通信技术入门(四):手机的演进,史上最全挪动终端发展史》《IM开发者的零根底通信技术入门(五):1G到5G,30年挪动通信技术演进史》《IM开发者的零根底通信技术入门(六):挪动终端的接头人——“基站”技术》《IM开发者的零根底通信技术入门(七):挪动终端的千里马——“电磁波”》《IM开发者的零根底通信技术入门(八):零根底,史上最强“天线”原理扫盲》《IM开发者的零根底通信技术入门(九):无线通信网络的中枢——“核心网”》《IM开发者的零根底通信技术入门(十):零根底,史上最强5G技术扫盲》《IM开发者的零根底通信技术入门(十一):为什么WiFi信号差?一文即懂!》《IM开发者的零根底通信技术入门(十二):上网卡顿?网络掉线?一文即懂!》(* 本文)《IM开发者的零根底通信技术入门(十三):手机信号差?一文即懂!》《IM开发者的零根底通信技术入门(十四):高铁上无线上网有多难?一文即懂!》《IM开发者的零根底通信技术入门(十五):了解定位技术,一篇就够》 (本文已同步公布于:http://www.52im.net/thread-2406-1-1.html)

May 8, 2023 · 1 min · jiezi

关于即时通信:开源即时通讯IM框架MobileIMSDK的微信小程序端技术概览

一、根本介绍MobileIMSDK - 微信小程序端是一套基于微信原生 WebSocket 的即时通讯库:1)超轻量级、无任何第 3 方库依赖(开箱即用);2)纯 JS 编写、ES6 语法、高度提炼,简略易用;3)基于微信原生 WebSocket API,简洁优雅;4)反对运行于任何反对微信小程序的手机端;5)能与 MobileIMSDK 的各种客户端完满互通;6)可利用于微信小程序中的音讯推送、客服聊天、企业 OA、IM 等场景。 二、与 MobileIMSDK 的关系MobileIMSDK - 微信小程序端是基于微信原生 WebSocket 协定的 MobileIMSDK 配套客户端库。MobileIMSDK 是一套专为挪动端开发的开源原创 IM 通信层框架:历经 8 年、久经考验;超轻量级、高度提炼,lib 包 50KB 以内;精心封装,一套 API 同时反对 UDP、TCP、WebSocket 三种协定(可能是全网惟一开源的);客户端反对 iOS、Android、规范 Java、H5、小程序、Uniapp(开发中..);服务端基于 Netty,性能卓越、易于扩大;可与姊妹工程 MobileIMSDK-Web 无缝互通实现网页端聊天或推送等;可利用于跨设施、跨网络的聊天 APP、企业 OA、音讯推送等各种场景。以下是 MobileIMSDK 的最新通信架构图:PS:MobileIMSDK 的客户端库始终在继续开发和降级中,目前 基于 Uniapp 的 MobileIMSDK 客户端正在开发中 。 三、设计指标间接应用原生的微信小程序 WebSocket 有以下问题和劣势:1)性能无限:没有心跳保活、断线重连、音讯送达保障(重传和去重)等即时通讯要害算法和逻辑;2)API 简陋:在如此无限的原生 API 下,能逻辑清晰地实现并组合心跳保活、断线重连、音讯送达保障等算法,须要相当高的技术掌控力;3)逻辑耦合:教训欠缺的开发人员,会将 WebSocket 通信与前端 UI 界面代码混在一起,使得 UI 界面的重构、保护、改版都十分艰难。针对以上问题,而 MobileIMSDK - 微信小程序端库将让开发者专一于 UI 应用层的开发,网络通信层的业余代码交由 SDK 开发人员,从而解偶 UI 前端和通信层的逻辑耦合性,大大降低技术复杂性。MobileIMSDK - 微信小程序端库的设计指标是为您的开发带来以下便当:1)界面与通信解偶:UI 界面与网络通信代码解耦,UI 界面的重构、保护、改版都非常容易和优雅;2)轻量级和兼容性:受害于保持原生微信小程序 WebSocket API,简洁轻量,无需任何额定依赖;3)外围内聚和收敛:得益于长期的提炼和教训积攒,SDK 核心层高度封装,开发者无需了解简单算法即可简略上手。4)纯 JS 轻量级实现:SDK 为纯 JS 编写、ES6 语法,无重量级框架和库依赖,可干净利落地对接各种既有零碎。 ...

April 20, 2023 · 1 min · jiezi

关于即时通信:即时通讯技即时通讯技术文集第8期移动端弱网优化系列-共14篇

为了更好地分类浏览52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第8 期。[- 1 -] 古代挪动端网络短连贯的优化伎俩总结:申请速度、弱网适应、平安保障 [链接] http://www.52im.net/thread-14... [摘要] 本文整顿的无关内容,对于挪动端即时通讯IM利用来说,同样具备启发意义,因为现今支流的挪动端IM数据通信总结下来无外乎就是长连贯+短连贯的形式,则短连贯的优化在某些场景下对于挪动端IM来说可能显示的更为特出。 [- 2 -] 挪动端IM开发者必读(一):通俗易懂,了解挪动网络的“弱”和“慢” [链接] http://www.52im.net/thread-15... [摘要] 本文的目标,就是心愿以通俗易懂的语言,帮忙挪动端IM开发者更好地了解挪动网络的各种个性,使得开发出的性能能更好地适应挪动网络,给用户带来更好的应用体验。 [- 3 -] 挪动端IM开发者必读(二):史上最全挪动弱网络优化办法总结 [链接] http://www.52im.net/thread-15... [摘要]本文接上篇《挪动端IM开发者必读(一):通俗易懂,了解挪动网络的“弱”和“慢”》,对于挪动网络的次要个性,在上篇中已进行过具体地论述,本文将针对上篇中提到的个性,联合咱们的实践经验,总结了四个办法来谋求极致的“痛快”:快链路、轻往返、强监控、多异步,从实践讲到实际、从技术讲到产品,实践联系实际,触类旁通,心愿给您带来启发。 [- 4 -] 全面理解挪动端DNS域名劫持等杂症:原理、本源、HttpDNS解决方案等 [链接] http://www.52im.net/thread-21... [摘要] 对于互联网,域名是拜访的第一跳,而这一跳很多时候会“失足”(尤其是挪动端网络),导致拜访谬误内容、失败连贯等,让用户在互联网上畅游的痛快霎时隐没。而对于这要害的第一跳,包含鹅厂在内的国内互联网大厂,都在继续深刻地钻研和思考对策,本文将就鹅厂团队在这一块的技术实际,做一个深度的总结和技术分享,心愿给大家带来些许启发。 [- 5 -] 美图App的挪动端DNS优化实际:HTTPS申请耗时减小近半 [链接] http://www.52im.net/thread-21... [摘要] 本文介绍美图APP在挪动端DNS优化的实际(次要针对HTTPS协定),文章内容从DNS问题、原理到最终优化成果,解说的较全面,值得学习和借鉴。 [- 6-] 百度APP挪动端网络深度优化实际分享(一):DNS优化篇 [链接] http://www.52im.net/thread-24... [摘要]网络优化是客户端几大技术方向中公认的一个深度畛域,所以百度App给大家带来网络深度优化系列文章。 [- 7 -] 百度APP挪动端网络深度优化实际分享(二):网络连接优化篇 [链接] http://www.52im.net/thread-24... [摘要]在《百度APP挪动端网络深度优化实际分享(一):DNS优化篇》里大家理解到网络优化个别会首选优化DNS,而接下来的HTTP协定成为优化的重点,个别优化者会抉择协定切换,合并申请,精简数据包大小等伎俩来对HTTP协定进行优化,谨严的说这都不属于网络优化的领域。HTTP协定的根底是连贯,所以本文应运而生,心愿对大家在网络方向的学习和实际有所帮忙。 [- 8-] 百度APP挪动端网络深度优化实际分享(三):挪动端弱网优化篇 [链接] http://www.52im.net/thread-26... [摘要]弱网问题,它是网络优化中最为简单且须要重复验证和剖析的问题,本文就是要深入探讨这个问题。 [- 9 -] 爱奇艺挪动端网络优化实际分享:网络申请成功率优化篇 [链接] http://www.52im.net/thread-29... [摘要]对于普通用户应用APP来说,能顺畅的实现网络申请,是天经地义的事。换句话说,APP网络申请成功率,重要性间接体现在它能间接决定APP服务的可用性,间接影响到数据通信、视频播放、广告展示、领取便捷等服务质量。本文将以爱奇艺的iOS端APP为例,分享对挪动网络申请成功率优化方面的技术实际之路。 [- 10-] 美团点评的挪动端网络优化实际:大幅晋升连贯成功率、速度等 ...

February 24, 2023 · 1 min · jiezi

关于即时通信:即时通讯技术文集第4期不为人知的网络编程-共14篇

为了更好地分类浏览52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第4 期。 [- 1 -] 鲜为人知的网络编程(一):浅析TCP协定中的疑难杂症(上篇) [链接] http://www.52im.net/thread-10... [摘要] 可能大家都晓得TCP是三次交互实现连贯的建设,四次交互来断开一个连贯,那为什么是三次握手和四次挥手呢?反过来不行吗? [- 2 -] 鲜为人知的网络编程(二):浅析TCP协定中的疑难杂症(下篇) [链接] http://www.52im.net/thread-10... [摘要] 接上篇《鲜为人知的网络编程(一):浅析TCP协定中的疑难杂症(上篇)》,咱们提到第6个疑难:TCP的头等疼症TIME_WAIT状态,上面咱们持续这个问题的解答。 [-3 -] 鲜为人知的网络编程(三):敞开TCP连贯时为什么会TIME_WAIT、CLOSE_WAIT [链接] http://www.52im.net/thread-10... [摘要] 这次就和大家分享一下咱们的netframework服务总会抛出一个“connet reset by peer”的起因吧。 [-4 -] 鲜为人知的网络编程(四):深入研究剖析TCP的异样敞开 [链接] http://www.52im.net/thread-10... [摘要] 大家都明确是“网络被对端重置了”,但到底什么状况下会导致这种状况呢?本文就对TCP的各种敞开状况做了进一步的测试钻研。 [- 5 -] 鲜为人知的网络编程(五):UDP的连接性和负载平衡 [链接] http://www.52im.net/thread-10... [摘要] 本文将从实际登程,探讨UDP在理论利用中的连接性和负载平衡问题。 [- 6 -] 鲜为人知的网络编程(六):深刻地了解UDP协定并用好它 [链接] http://www.52im.net/thread-10... [摘要]本文接上篇《鲜为人知的网络编程(五):UDP的连接性和负载平衡》,将从实际登程,探讨如何深刻地了解UDP协定并在实践中用好它。 [- 7 -] 鲜为人知的网络编程(七):如何让不牢靠的UDP变的牢靠? [链接] http://www.52im.net/thread-12... [摘要] 在 UDP 之上做一层牢靠,很多敌人认为这是很不靠谱的事件,也有敌人认为这是一个大杀器,能够解决实时畛域里大部分问题。波及到实时传输咱们都会先思考 RUDP,RUDP 利用在咱们APP外围传输体系的各个方面,但不同的零碎场景咱们设计了不同的 RUDP 形式,所以基于那些强烈的探讨和咱们应用的教训,我决定扒一扒 RUDP,来给大家分享如何让UDP变的牢靠的实践经验。 [- 8 -] 鲜为人知的网络编程(八):从数据传输层深度解密HTTP ...

November 1, 2022 · 1 min · jiezi

关于即时通信:IM跨平台技术学习五融云基于Electron的IM跨平台SDK改造实践总结

本文由融云技术团队分享,有订正和改变。1、引言Electron 凭借其绝对更低的研发老本投入、弱小的跨平台反对、领有基数宏大的 Javascript 开发者受众等劣势,在 PC 端跨平台桌面开发畛域异军突起,大受欢迎。本文分享的是融云基于Electron的IM跨平台PC端SDK革新过程中所总结的一些实践经验,心愿对你有用。 情谊提醒:如果您对Electron的根底概念还不太理解,建议您先从本系列文章的首篇《疾速理解新一代跨平台桌面技术——Electron》和第2篇《Electron初体验(疾速开始、跨过程通信、打包、踩坑等)》开始浏览,否则可能难以了解本文的无关内容。学习交换: -挪动端IM开发入门文章:《新手入门一篇就够:从零开发挪动端IM》-开源IM框架源码:https://github.com/JackJiang2...(备用地址点此)(本文已同步公布于:http://www.52im.net/thread-40...) 2、系列文章本文是系列文章中的第5篇,本系列总目录如下:《IM跨平台技术学习(一):疾速理解新一代跨平台桌面技术——Electron》《IM跨平台技术学习(二):Electron初体验(疾速开始、跨过程通信、打包、踩坑等)》《IM跨平台技术学习(三):vivo的Electron技术栈选型、全方位实际总结》《IM跨平台技术学习(四):蘑菇街基于Electron开发IM客户端的技术实际》《IM跨平台技术学习(五):融云基于Electron的IM跨平台SDK革新实际总结》(* 本文)《IM跨平台技术学习(六):网易云信基于Electron的IM音讯全文检索技术实际》(稍后公布.. ) 3、本次革新的技术指标针对本次革新,咱们须要达到以下4个技术指标:1)需提供与传统桌面通信软件相匹配的能力反对;2)需实现浏览器与Electron不同运行时代码的高度复用;3)便于开发者构建多窗口、多过程的简单桌面端利用;4)需同步适配同一IM端SDK的多个版本。以下,咱们将逐条探讨这4个指标所有实现的具体技术内容。 4、技术指标1:需提供与传统桌面通信软件相匹配的能力反对相较于 B/S 架构的 Web 网页利用,咱们冀望可能在 Electron 环境下向开发者提供更为丰盛的本地化能力,以及比 Websocket(或Comet)更高效的Socket实时双工通信通道。借助这些本来在浏览器环境下不便实现的技术能力,来整体进步用户对于桌面端产品的应用体验,将 Electron 作为一个 C/S 架构软件运行平台的后劲施展到最大。(文言就是,咱们心愿借助Electron这个框架,将本来Web端的一些鸡肋能力,做到像原生富客户端一样) 5、技术指标2:浏览器与Electron不同运行时代码的高度复用因为 Electron 与规范 Web 利用领有简直雷同的技术生态,因而少数产品会要求前端代码工程兼顾浏览器与 Electron。也就是说,一套代码既要打包为传统桌面端利用(利用Electron),又可公布为浏览器中运行的 Web 网页利用。基于此,咱们提供的 IM SDK 须要在两种不同的运行时环境下做到差别最小化,防止开发者编写冗余的平台兼容代码。(文言就是,尽可能在基于Electron的桌面端和纯Web网页端之间重用更多的代码,不然又得多撸一个全新的Electron端,这得多吃力) 6、技术指标3:便于开发者构建多窗口、多过程的简单桌面端利用Electron 通过对 IPC 能力的封装为桌面端利用开发提供了较欠缺的跨过程通信计划,借助此能力,开发者构建的桌面端利用也逐步趋于简单。比拟典型的如桌面端IM产品:通常用一个独立窗口做根底的 IM 聊天业务,一个窗口做历史聊天记录查问业务。当有音视频会议业务场景时,还须要再开一个窗口做会议业务。甚至有开发者提出了与每个聊天对象都放弃一个独立聊天窗口的需要(产品状态如 QQ)。在这类需要下,长连贯状态维持、音讯同步变得异样简单,起因在于以下3个方面。1)若每个过程窗口都维持独立长连贯,难免会呈现某一过程连贯与其余过程连贯状态不同步。且开发者需在各过程同时保护连贯状态,复杂度较高。同时还会造成服务的并发能力降落。2)若仅有繁多主窗口进行连贯维持,其余窗口通过 IPC 能力将主窗口作为连贯代理,则须要在主过程、各渲染过程中保护简单的跨过程通信业务代码,从而推高我的项目整体的复杂度。3)目前的 Electron 开发者绝大多数来自于 Web 开发者,既有编程思维是建设在浏览器页面内单过程单线程的利用模型下构建起来的,对于解决此类多过程模型的产品开发不足相干的教训积攒。为升高相似需要场景的业务实现复杂度,咱们须要在 PaaS 能力层面上解决多过程连贯共享、多过程音讯同步问题,让开发者在既有编程思维模式下将每个业务实现的更为顺畅。 7、技术指标4:需同步适配同一IM端SDK的多个版本咱们的既有Web端 IM SDK 存在一个端多个不同版本的状况(次要是为了兼容老用户,旧版本很难一刀切间接扔掉,只能新老版末同时并存)。各版本都有不同数量的客户积攒,且各版本 API 接口设计迥异,跨版本升级老本较高。思考到应用不同版本的客户将来将业务向 Electron 迁徙的可能性,咱们冀望通过架构设计的改良来防止既有客户做过多的集成代码批改,在确保既有客户不因版本升级而散失的前提下升高 Web 研发团队本身的多版本 SDK 保护老本。 8、本次革新的落地实际针对下面章节中确定的技术指标,咱们将从以下3个方向着手落地实际:1)剥离各版本的独特业务与对外差异性 API 定义;2)Electron 与浏览器平台下 IM SDK 的辨别;3)解决多过程音讯同步、多过程连贯共享问题。以下,咱们将逐条分享这3个方面的具体实际内容。 9、落地实际1:剥离各版本的独特业务与对外差异性API定义咱们的 IM SDK 各版本别离为不同的代码仓库独立保护,互无干系。(文言就是,所有端的IM SDK都是独立开发,从头造轮子)这导致所有的性能(包含行将开发的 Electron 桌面解决方案)都可能要在各个版本仓库上独自实现,不仅开发成本高,还会导致实现品质无奈保障、或代码实现不对立,同时也推高了产研后续流程的测试、上线等环节的老本。▲ IM SDK 不同版本独立保护基于前述技术指标4的要求,在既有现状下持续开发,就意味着须要在两个版本的根底上做不同实现,既不合乎程序员的代码审美,也影响团队整体的研发效率。(文言就是,如果又要从头造轮子切实太难受)为更好地达成技术指标4,团队决定优先通过重构将既有业务分层,即各个版本所必须的业务代码形象下沉为 IM Engine 包,并为各个版本 IM SDK 别离实现不同的API Layer以便与既有线上版本接口对齐,这样既能够升高团队的研发老本,也能够满足既有线上客户后续的降级需要。▲ 重构代码实现业务分层实现业务分层后,对于 IM SDK 有依赖的其余产品如 RTC SDK,也都能够解脱对 IM SDK 接口的依赖而间接调用 Engine 层接口,业务层在拓展 RTC 业务时,也就无需再思考 IM SDK 的版本问题。▲ 业务分层后的构造将保障拓展性做分层的另一个思考还为了达成技术指标2,将与业务层的交互限度在 API 层,在 Engine 中解决 Electron 与浏览器两种运行时下的代码差别,业务层只需关怀 IM SDK 的接口调用而无需关怀底层差别,确保业务层在两种运行时下只须要保护极少甚至无需保护兼容代码,便于业务层更专一于业务开发。 ...

October 20, 2022 · 2 min · jiezi