一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据传输连接的管理方法及服务器与流程

2021-12-01 01:11:00 来源:中国专利 TAG:


1.本技术涉及通信技术领域,尤其涉及一种数据传输连接的管理方法及服务器。


背景技术:

2.随着显示设备的快速发展,显示设备的功能将越来越丰富,性能也越来越强大,目前,显示设备包括智能电视、手机、冰箱,以及其他带有智能显示屏幕的产品等。为提高显示设备的应用体验,显示设备内可配置视频会议功能,实现线上会议的目的。
3.在实现视频会议功能时,可采用数据传输(websocket)连接实现服务器与显示设备之间的高效信令交互。在存在一个视频会议时,服务器与登录该视频会议的多个显示设备即可建立一个数据传输连接,即为长连接。那么,在存在多个不同的视频会议时,服务器可同时与多个显示设备进行多个视频会议的数据传输连接,对应产生多个长连接。
4.但是,服务器端同时建立多个长连接极易因网络故障和数据传输异常等原因引起连接混乱、冲突并发等现象,影响数据传输连接的稳定性。


技术实现要素:

5.本技术提供了一种数据传输连接的管理方法及服务器,以解决数据传输连接稳定性较低的问题。
6.第一方面,本技术提供了一种服务器,包括:控制器,被配置为:
7.响应于基于会议id加入视频会议的第一设备发送的通信请求,创建用于进行通信请求收发的连接读取通道和连接发送通道;
8.调用读取协程,从所述通信请求中读取通信数据,将所述通信数据发送至所述连接读取通道;
9.从所述连接读取通道内读取待发送的通信数据,经过数据处理后,将得到的通信数据发送至所述连接发送通道;
10.调用发送协程,从所述连接发送通道内读取数据处理后的通信数据并发送至第二设备,以建立所述第一设备与第二设备的数据传输连接,所述第二设备是指与所述第一设备基于同一会议id加入同一视频会议的设备。
11.本技术一些实施例中,所述控制器被进一步配置为:
12.在接收到所述第一设备发送的通信请求之后,从所述通信请求中获取协议标识,所述协议标识用于表征实现通信请求传输的通信协议;
13.如果获取到的所述协议标识为数据传输连接协议标识,则基于网页连接协议建立同一视频会议中所述第一设备和第二设备的数据传输连接。
14.本技术一些实施例中,所述控制器被进一步配置为:
15.在接收到所述第一设备发送的通信请求之后,建立所述第一设备与服务器的数据传输连接;
16.为所述第一设备与服务器的数据传输连接分配uuid,所述uuid用于区分同一所述
第一设备与服务器的不同数据传输连接。
17.本技术一些实施例中,所述控制器被进一步配置为:
18.如果所述第一设备与所述服务器产生新数据传输连接,则在缓存中查找是否存在原数据传输连接;
19.如果存在原数据传输连接,则获取所述原数据传输连接对应的原uuid和新数据传输连接的新uuid;
20.如果所述原uuid和新uuid不一致,则将所述原uuid对应的原数据传输连接的连接关闭通道关闭。
21.本技术一些实施例中,所述控制器被进一步配置为:响应于所述通信请求,在创建连接读取通道和连接发送通道时,创建连接关闭通道,所述连接关闭通道用于同步所述连接读取通道的读取状态和所述连接发送通道的读取状态。
22.本技术一些实施例中,所述控制器被进一步配置为:
23.在从所述连接读取通道内读取待发送的通信数据时,获取所述连接关闭通道的状态值;
24.如果获取到所述连接关闭通道的状态值,则停止从所述连接读取通道内读取待发送的通信数据;
25.如果未获取到所述连接关闭通道的状态值,则继续从所述连接读取通道内读取待发送的通信数据,进行数据处理。
26.本技术一些实施例中,所述控制器被进一步配置为:
27.在从所述连接发送通道内读取数据处理后的通信数据时,获取所述连接关闭通道的状态值;
28.如果获取到所述连接关闭通道的状态值,则停止向所述连接发送通道内发送数据处理后的通信数据;
29.如果未获取到所述连接关闭通道的状态值,则继续向所述连接发送通道内发送数据处理后的通信数据,以发送至所述第二设备。
30.本技术一些实施例中,所述控制器被进一步配置为:
31.在建立所述第一设备与第二设备的数据传输连接后,调用检查协程,按照预设时间间隔向所述连接读取通道发送检查请求,所述检查请求用于判断所述第一设备和第二设备的数据传输连接是否处于使用状态;
32.响应于所述检查请求,获取所述第一设备和第二设备的数据传输连接的心跳时间;
33.如果所述心跳时间超过预设时间,则确定所述第一设备和第二设备的数据传输连接未处于使用状态。
34.本技术一些实施例中,所述控制器被进一步配置为:在所述第一设备和第二设备的数据传输连接未处于使用状态时,调用读写锁,关闭连接关闭通道,以及,重置所述连接关闭通道的状态值。
35.第二方面,本技术还提供了一种数据传输连接的管理方法,所述方法包括:
36.响应于基于会议id加入视频会议的第一设备发送的通信请求,创建用于进行通信请求收发的连接读取通道和连接发送通道;
37.调用读取协程,从所述通信请求中读取通信数据,将所述通信数据发送至所述连接读取通道;
38.从所述连接读取通道内读取待发送的通信数据,经过数据处理后,将得到的通信数据发送至所述连接发送通道;
39.调用发送协程,从所述连接发送通道内读取数据处理后的通信数据并发送至第二设备,以建立所述第一设备与第二设备的数据传输连接,所述第二设备是指与所述第一设备基于同一会议id加入同一视频会议的设备。
40.第三方面,本技术还提供了一种存储介质,该存储介质可存储有程序,该程序执行时可实现包括本技术提供的数据传输连接的管理方法各实施例中的部分或全部步骤。
41.由以上技术方案可知,本发明实施例提供的一种数据传输连接的管理方法及服务器,响应于基于会议id加入视频会议的第一设备发送的通信请求,创建连接读取通道和连接发送通道;调用读取协程从通信请求中读取通信数据,并发送至连接读取通道;从连接读取通道内读取待发送的通信数据,经过数据处理后发送至连接发送通道;调用发送协程从连接发送通道内读取数据处理后的通信数据并发送至第二设备,以建立第一设备与第二设备的数据传输连接。可见,该方法及服务器,可实时创建与通信请求对应的消息通道,对对应的数据传输连接进行管理,如连接的建立、检查和回收机制,来提高数据传输连接的可用性、并发性以及唯一性,实现同时维护和管理不同视频会议及不同显示设备的大量长连接,可保证数据传输连接的稳定性。
附图说明
42.为了更清楚地说明本技术的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
43.图1示出了根据一些实施例的智能控制设备与控制装置之间操作场景的示意图;
44.图2示出了根据一些实施例的智能控制设备200的硬件配置框图;
45.图3示出了根据一些实施例的控制设备100的硬件配置框图;
46.图4示出了根据一些实施例的智能控制设备200中软件配置图;
47.图5示出了根据一些实施例的数据传输连接的管理方法的流程图;
48.图6示出了根据一些实施例的数据传输连接的管理方法的数据框图。
具体实施方式
49.为使本技术的目的和实施方式更加清楚,下面将结合本技术示例性实施例中的附图,对本技术示例性实施方式进行清楚、完整地描述,显然,描述的示例性实施例仅是本技术一部分实施例,而不是全部的实施例。
50.需要说明的是,本技术中对于术语的简要说明,仅是为了方便理解接下来描述的实施方式,而不是意图限定本技术的实施方式。除非另有说明,这些术语应当按照其普通和通常的含义理解。本技术中说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”等是用于区别类似或同类的对象或实体,而不必然意味着限定特定的顺序或先后次序,除非另外注明。应该理解这样使用的用语在适当情况下可以互换。
51.术语“包括”和“具有”以及他们的任何变形,意图在于覆盖但不排他的包含,例如,包含了一系列组件的产品或设备不必限于清楚地列出的所有组件,而是可包括没有清楚地列出的或对于这些产品或设备固有的其它组件。术语“模块”是指任何已知或后来开发的硬件、软件、固件、人工智能、模糊逻辑或硬件或/和软件代码的组合,能够执行与该元件相关的功能。
52.在智能控制设备为显示设备时,基于显示设备的结构进行介绍。
53.图1示出了根据一些实施例的智能控制设备的使用场景。如图1所示,智能控制设备200还与服务器400进行数据通信,用户可通过智能设备300或控制装置100操作智能控制设备200。
54.在一些实施例中,控制装置100可以是遥控器,遥控器和智能控制设备的通信包括红外协议通信或蓝牙协议通信,及其他短距离通信方式中的至少一种,通过无线或有线方式来控制智能控制设备200。用户可以通过遥控器上按键、语音输入、控制面板输入等至少一种输入用户指令,来控制智能控制设备200。
55.在一些实施例中,智能设备300可以包括移动终端、平板电脑、计算机、笔记本电脑,ar/vr设备等中的任意一种。
56.在一些实施例中,也可以使用智能设备300以控制智能控制设备200。例如,使用在智能设备上运行的应用程序控制智能控制设备200。在一些实施例中,也可以使用智能设备300和智能控制设备进行数据的通信。
57.在一些实施例中,智能控制设备200还可以采用除了控制装置100和智能设备300之外的方式进行控制,例如,可以通过智能控制设备200设备内部配置的获取语音指令的模块直接接收用户的语音指令控制,也可以通过智能控制设备200设备外部设置的语音控制装置来接收用户的语音指令控制。
58.在一些实施例中,智能控制设备200还与服务器400进行数据通信。可允许智能控制设备200通过局域网(lan)、无线局域网(wlan)和其他网络进行通信连接。服务器400可以向智能控制设备200提供各种内容和互动。服务器400可以是一个集群,也可以是多个集群,可以包括一类或多类服务器。
59.在一些实施例中,一个步骤执行主体执行的软件步骤可以随需求迁移到与之进行数据通信的另一步骤执行主体上进行执行。示例性的,服务器执行的软件步骤可以随需求迁移到与之数据通信的智能控制设备上执行,反之亦然。
60.图2示出了根据一些实施例的控制装置100的硬件配置框图。如图2所示,控制装置100包括控制器110、通信接口130、用户输入/输出接口140、存储器、供电电源。控制装置100可接收用户的输入操作指令,且将操作指令转换为智能控制设备200可识别和响应的指令,起用用户与智能控制设备200之间交互中介作用。
61.在一些实施例中,通信接口130用于和外部通信,包含wifi芯片,蓝牙模块,nfc或可替代模块中的至少一种。在一些实施例中,用户输入/输出接口140包含麦克风,触摸板,传感器,按键或可替代模块中的至少一种。
62.图3示出了根据一些实施例的智能控制设备200的硬件配置框图。参见图3,在一些实施例中,智能控制设备200包括调谐解调器210、通信器220、检测器230、外部装置接口240、控制器250、显示器260、音频输出接口270、存储器、供电电源、用户接口中的至少一种。
在一些实施例中,控制器包括中央处理器,视频处理器,音频处理器,图形处理器,ram,rom,用于输入/输出的第一接口至第n接口。
63.在一些实施例中,显示器260包括用于呈现画面的显示屏组件,以及驱动图像显示的驱动组件,用于接收源自控制器输出的图像信号,进行显示视频内容、图像内容以及菜单操控界面的组件以及用户操控ui界面等。在一些实施例中,显示器260可为液晶显示器、oled显示器、以及投影显示器中的至少一种,还可以为一种投影装置和投影屏幕。
64.在一些实施例中,控制器250和调谐解调器210可以位于不同的分体设备中,即调谐解调器210也可在控制器250所在的主体设备的外置设备中,如外置机顶盒等。在一些实施例中,控制器250,通过存储在存储器上中各种软件控制程序,来控制智能控制设备的工作和响应用户的操作。控制器250控制智能控制设备200的整体操作。例如:响应于接收到用于选择在显示器260上显示ui对象的用户命令,控制器250便可以执行与由用户命令选择的对象有关的操作。
65.在一些实施例中,所述对象可以是可选对象中的任何一个,例如超链接、图标或其他可操作的控件。与所选择的对象有关操作有:显示连接到超链接页面、文档、图像等操作,或者执行与所述图标相对应程序的操作。
66.在一些实施例中控制器包括中央处理器(central processing unit,cpu),视频处理器,音频处理器,图形处理器(graphics processing unit,gpu),ram random access memory,ram),rom(read

only memory,rom),用于输入/输出的第一接口至第n接口,通信总线(bus)等中的至少一种。
67.在一些实施例中,用户可在显示器260上显示的图形用户界面(gui)输入用户命令,则用户输入接口通过图形用户界面(gui)接收用户输入命令。或者,用户可通过输入特定的声音或手势进行输入用户命令,则用户输入接口通过传感器识别出声音或手势,来接收用户输入命令。
68.在一些实施例中,“用户界面”,是应用程序或操作系统与用户之间进行交互和信息交换的介质接口,它实现信息的内部形式与用户可以接受形式之间的转换。用户界面常用的表现形式是图形用户界面(graphic user interface,gui),是指采用图形方式显示的与计算机操作相关的用户界面。它可以是在电子设备的显示屏中显示的一个图标、窗口、控件等界面元素,其中控件可以包括图标、按钮、菜单、选项卡、文本框、对话框、状态栏、导航栏、widget等可视的界面元素中的至少一种。在一些实施例中,用户接口280,为可用于接收控制输入的接口(如:智能控制设备本体上的实体按键,或其他等)。
69.图4示出了根据一些实施例的智能控制设备200中软件配置图。参见图4,在一些实施例中,将系统分为四层,从上至下分别为应用程序(applications)层(简称“应用层”),应用程序框架(application framework)层(简称“框架层”),安卓运行时(android runtime)和系统库层(简称“系统运行库层”),以及内核层。
70.在一些实施例中,应用程序层中运行有至少一个应用程序,这些应用程序可以是操作系统自带的窗口(window)程序、系统设置程序或时钟程序等;也可以是第三方开发者所开发的应用程序。在具体实施时,应用程序层中的应用程序包不限于以上举例。
71.框架层为应用程序提供应用编程接口(application programming interface,api)和编程框架。应用程序框架层包括一些预先定义的函数。应用程序框架层相当于一个
处理中心,这个中心决定让应用层中的应用程序做出动作。应用程序通过api接口,可在执行中访问系统中的资源和取得系统的服务。
72.如图4所示,本技术实施例中应用程序框架层包括管理器(managers),提供器(content provider)、网络管理系统等,其中管理器包括以下模块中的至少一个:活动管理器(activity manager)用与和系统中正在运行的所有活动进行交互;位置管理器(location manager)用于给系统服务或应用提供了系统位置服务的访问;文件包管理器(package manager)用于检索当前安装在设备上的应用程序包相关的各种信息;通知管理器(notification manager)用于控制通知消息的显示和清除;窗口管理器(window manager)用于管理用户界面上的括图标、窗口、工具栏、壁纸和桌面部件。
73.在一些实施例中,在显示设备内配置视频会议功能时,本端用户操作本端显示设备创建携带会议id的视频会议链接,通过服务器发送至需要参加视频会议的对端显示设备,会议id是指会议号,用于标识视频会议线上房间。在进行视频会议时,本端用户在本端显示设备上基于会议id加入视频会议链接,进入视频会议线上房间;对端用户在对端显示设备上也基于同一会议id加入该视频会议链接,进入同一视频会议线上房间。此时,本端用户和对端用户即可在该视频会议线上房间进行线上会议。
74.在视频会议过程中,任一端显示设备均可通过服务器向另一端显示设备发送消息,或者,任一端显示设备均可通过服务器向另一端显示设备同步状态。此时,主动发起通信请求的设备(第一设备)需与服务器建立数据通信,以及,被动接收通信请求的设备(第二设备)也需与服务器建立数据通信。
75.为实现任一端显示设备与服务器之间的数据通信,通常采用http协议进行数据传输。但是,http协议的数据传输方式为采用轮询方式获取通信数据的返回。例如,第一设备向服务器发送通信数据后,第二设备需实时向服务器请求第一设备发送的通信数据,即第二设备获得通信数据的方式执行的是“一请求一返回”的一次性操作。
76.此时,在进行一次通信数据传输时,服务器端会执行两次数据请求的过程,即第一设备发送通信数据的请求和第二设备请求该通信数据的请求,造成服务器端的数据处理压力。另外,第二设备为获得第一设备发送的通信数据,第二设备需要按照预设时间间隔不断的刷新以获得该通信数据,导致第二设备获得通信数据的时刻要晚于第一设备发送通信数据的时刻,第二设备无法及时快速响应,造成通信延迟,用户体验不好。
77.因此,为保证进行视频会议的双方设备均可及时获取到对应发送的通信数据,在实现视频会议功能时,可采用数据传输(websocket)连接实现服务器与显示设备之间的高效信令交互。在存在一个视频会议时,服务器与登录该视频会议的多个显示设备即可建立一个数据传输连接,即为一个长连接,该数据传输连接一直存在。那么,在存在多个不同的视频会议时,服务器可同时与多个显示设备进行多个视频会议的数据传输连接,对应产生多个长连接。
78.与http协议所对应的轮询方式获取数据相比,数据传输(websocket)连接不需要通过轮询的方式获得数据的返回,可降低服务器的压力;在第一设备状态变化的时候能够快速响应,及时发送至第二设备,降低通信延迟。例如,在第一设备产生通信数据时,可直接通过服务器发送至第二设备,无需第二设备执行数据请求后再获得,通信及时更高效。
79.在服务器端采用数据传输(websocket)连接方式实现通信长连接时,服务器与显
示设备的关系为一对多的关系。但是,服务器端同时建立多个长连接极易因网络故障和数据传输异常等原因引起连接混乱、冲突并发等现象,影响数据传输连接的稳定性。
80.为了保证数据传输连接的稳定性,本技术提供一种服务器,服务器需要同时维护和管理不同视频会议及不同显示设备的大量长连接。此时,需要服务器识别无效的连接,及时的回收和释放;针对websocket原生api不是线程安全的情况提供一种并发安全机制,提高请求收发能力;保证连接的唯一性,同一显示设备只允许一个连接与服务器建连。
81.回收是指服务器与任一显示设备之间的数据传输结束后,将相应的websocket连接关闭。释放是指服务器与任一显示设备之间的数据传输结束后,若需要再次进行数据传输,则将相应的websocket连接开启,恢复数据传输。
82.并发现象是指服务器端和任一显示设备端同时发生状态改变的形象。例如,服务器侧主动断开(回收)连接,而任一显示设备因异常情况也关闭连接,此时,双方均产生连接关闭状态,导致冲突并发,使得二者之间的连接崩掉。
83.连接的唯一性是指一个显示设备只允许与服务器建立一个连接。例如,在一个显示设备与服务器建立连接后,如果因网络异常导致该显示设备崩掉被动退出视频会议,且该显示设备重新登录视频会议后,会对应产生一个新连接。由于此时服务器无法感知该显示设备的重新登录,会出现服务器与该显示设备存在两个连接。那么,在后续数据传输时,无法确定以哪一连接实现显示设备与服务器之间的数据传输,导致数据通信出现异常。因此,需要保证服务器与任一显示设备的连接应唯一。
84.因此,本技术提供一种服务器,执行数据传输连接的管理方法,对数据传输连接的管理包括websocket连接的建立、检查和回收机制,来提高websocket连接的可用性、并发性以及保证websocket连接的唯一性,进而保证服务器端能够同时维护和管理不同会议不同显示设备的大量长连接。
85.图5示出了根据一些实施例的数据传输连接的管理方法的流程图;图6示出了根据一些实施例的数据传输连接的管理方法的数据框图。本发明实施例提供一种服务器,包括:控制器,在执行图5和图6所示的数据传输连接的管理方法时,被配置为执行下述步骤:
86.s1、响应于基于会议id加入视频会议的第一设备发送的通信请求,创建用于进行通信请求收发的连接读取通道和连接发送通道。
87.在进行视频会议时,参加视频会议的可为至少两方,每一方用户均可通过对应的显示设备基于会议id加入视频会议链接以进入视频会议线上房间。例如,如果用户a与用户b进行视频会议,则登录视频会议的设备分别对应为显示设备a和显示设备b。如果用户a、用户b和用户c进行视频会议,则登录视频会议的设备分别对应为显示设备a、显示设备b和显示设备c。
88.在视频会议过程中,任何一方均可向另外一方或多方发送通信请求,通信请求可为会话消息、登录状态变更等,登录状态变更可为一方登录到视频会议后同步告知另一方设备已登录。此时,主动发送通信请求的一方为第一设备,其余被动接收通信请求的一方为第二设备,第二设备可为多个。例如,如果第一设备为显示设备a,则第二设备为显示设备b和显示设备c;如果第一设备为显示设备b,则第二设备为显示设备a和显示设备c。
89.由于显示设备与服务器之间进行通信数据的传输可采用http协议或数据传输连接协议,而http协议和数据传输连接协议可兼容。那么,为保证服务器与各个显示设备之间
的数据通信,需先进行连接建立前的准备,即先确定所基于的数据传输协议,即确定是基于http协议实现数据传输还是基于数据传输连接协议实现数据传输。
90.此时,在确定是否需要利用数据传输连接协议建立服务器与任一显示设备之间的数据传输连接时,控制器被进一步配置为执行下述步骤:
91.步骤111、在接收到第一设备发送的通信请求之后,从通信请求中获取协议标识,协议标识用于表征实现通信请求传输的通信协议。
92.步骤112、如果获取到的协议标识为数据传输连接协议标识,则基于网页连接协议建立同一视频会议中第一设备和第二设备的数据传输连接。
93.第一设备在与服务器进行通信时,通常先采用http协议进行传输,即通信请求为http请求,基于http请求来判断是否需要进行通信协议的切换。
94.服务器在接收到主动发起通信连接的第一设备发送的通信请求之后,对该通信请求进行解析,以获得协议标识。通信请求中携带协议标识可表征对应的第一设备所需的与服务器建立连接所依附的通信协议,即实现通信请求传输的通信协议。
95.如果通信请求为第一设备登录到视频会议的登录请求,则第一设备与服务器之间的数据传输为登录信息的传输。如果通信请求为会话请求,则第一设备与服务器之间的数据传输为会话信息的传输。此时,可基于通信请求中携带的协议标识,确定第一设备与服务器,以及,服务器与第二设备之间是否需要建立数据传输连接。
96.为实现服务器通信请求的接收,服务器为建立websocket连接定义独立的api接口,第一设备通过这个接口访问均是websocket的连接请求,不与http请求接口混用。在收到这个请求后,检查并补充header中的connection字段与upgrade字段,之后继续完成协议的切换和连接的建立,通过这种方式能够有效的提高websocket连接的成功率。
97.例如,解析通信请求的header字段以获得connection=upgrade字段信息以及upgrade=websocket字段信息,作为协议标识。如果upgrade=websocket为websocket,则确定通信请求中携带数据传输连接标识,需基于数据传输连接协议执行数据传输。此时,将先执行的http协议切换为websocket协议,基于数据传输连接协议实现第一设备与服务器,以及,服务器与第二设备之间的数据传输连接,以建立同一视频会议中第一设备和第二设备的数据传输连接。截至此,第一设备与服务器的连接建立前的准备完成。
98.在一些实施例中,在完成第一设备与服务器的连接建立前的准备后,为对第一设备与服务器的连接进行标识和区分,可通过初始化处理后为每个数据传输连接添加对应的标识id。为此,在进行连接标识时,控制器被进一步配置为执行下述步骤:
99.步骤113、在接收到第一设备发送的通信请求之后,建立第一设备与服务器的数据传输连接。
100.步骤114、为第一设备与服务器的数据传输连接分配uuid,uuid用于区分同一第一设备与服务器的不同数据传输连接。
101.在接收到第一设备发送的通信请求且以确定需基于数据传输连接协议实现数据传输之后,建立第一设备与服务器的数据传输连接,第一设备与服务器之间的数据传输所依据的连接为数据传输连接。
102.在进行视频会议过程中,如果第一设备因网络异常崩掉,那么,由于服务器无法感知第一设备的异常情况,使得第一设备再重新进入视频会议后会再次建立一个与服务器的
数据传输连接。那么,在后续数据传输时,无法确定以哪一连接实现显示设备与服务器之间的数据传输,导致数据通信出现异常。因此,需要保证服务器与第一设备的连接唯一性。
103.为避免第一设备与服务器建立多个数据传输连接,服务器为与第一设备建立的数据传输连接进行标识。此时,需先对第一设备与服务器之间的数据传输连接信息进行初始化处理,数据传输连接信息包括用户id、设备id和设备类型,用户id、设备id和设备类型用于标识唯一的第一设备。
104.在完成初始化后,对数据传输连接信息进行更新,即添加一个uuid。更新后的数据传输连接信息即可表征第一设备与服务器的数据传输连接分配有uuid,uuid(universally unique identifier,通用唯一识别码)为对应数据传输连接的标识id,uuid用于区分同一第一设备与服务器的不同数据传输连接。
105.当同一个用户(第一设备)下存在两个不同的uuid时,需要根据两个uuid对应的连接建立的时间戳,关闭建立较早的连接,保证第一设备与服务器之间的数据传输连接的唯一性。
106.在一些实施例中,服务器在接收到第一设备发送的通信请求后,即已建立一个长连接,为便于能够识别每个长连接的有效性,及时回收和释放,服务器为每个长连接均对应建立一个消息通道。此时,第一设备每产生一个通信请求,服务器即实时建立一个对应的消息通道,通信请求与消息通道为一对一的关系,保证每条长连接均可单独被控制和管理,避免出现混乱,保证数据传输连接的稳定性。
107.消息通道包括连接读取通道(readchannel)、连接发送通道(writechannel)和连接关闭通道(closechannel)。连接读取通道用于实现通信请求的接收,连接发送通道(用于实现通信请求的发送,连接关闭通道同步所述连接读取通道的读取状态和所述连接发送通道的读取状态。
108.在服务器接收到第一设备发送的通信请求,确定需基于数据传输连接协议实现数据传输,以及,通过初始化处理为第一设备与服务器建立的数据传输连接配置uuid后,实时创建连接读取通道、连接发送通道和连接关闭通道。第一设备产生的每一次的通信请求,其对应的通信数据均利用对应的消息通道发送至服务器和第二设备。
109.一个消息通道即为一个通信请求收发线程,使得第一设备产生的各个通信请求可单独通过服务器发送至第二设备,避免出现混乱。即使某个线程出现异常,那么只将该线程对应的数据传输连接回收即可,不会影响其他线程(数据传输连接)的正常数据传输,各个数据传输连接的稳定性更好。
110.在一些实施例中,如果第一设备存在重新进入视频会议的情况,则第一设备与服务器会产生一个新数据传输连接。那么,为保证后续的数据正常传输,控制器被进一步配置为执行下述步骤:
111.步骤121、如果第一设备与服务器产生新数据传输连接,则在缓存中查找是否存在原数据传输连接。
112.步骤122、如果存在原数据传输连接,则获取原数据传输连接对应的原uuid和新数据传输连接的新uuid。
113.步骤123、如果原uuid和新uuid不一致,则将原uuid对应的原数据传输连接的连接关闭通道关闭。
114.服务器在与第一设备建立数据传输连接,以及,初始化处理后,会在缓存中存储该第一设备与uuid的关系,即将建立的数据传输连接关系进行存储。
115.在因异常情况导致第一设备与服务器产生新数据传输连接时,服务器先在缓存中查找是否存在原数据传输连接,即查找第一设备是否有已经存在的数据传输连接建立。在查找时,可基于新数据传输连接的通信请求中携带的数据传输连接信息来标识该第一设备,再基于该第一设备在缓存中查找是否存在对应的uuid,即原数据传输连接。
116.如果在缓存中未查找到原数据传输连接,说明该第一设备为第一次与服务器建立数据传输连接的设备,即不存在原数据传输连接,可按照正常逻辑进行后序的向第二设备传输通信数据。
117.如果在缓存中查找到存在原数据传输连接,说明该第一设备为之前已与服务器建立过数据传输连接的设备,且该第一设备已存在对应的数据传输连接。此时,获取与该第一设备对应的原uuid。
118.由于在第一设备与服务器的每次数据传输时,服务器均会为当前建立的数据传输连接分配uuid,因此,新数据传输连接也对应有新uuid。
119.将原uuid和新uuid进行对比,如果不一致,则认为该新数据传输连接为第一设备与服务器建立的不同连接。此时,比较两个数据传输连接的建立时间,将较早建立的数据传输连接回收,以基于较晚建立的数据传输连接执行后续的数据传输,以保证第一设备与服务器之间的数据传输连接的唯一性,提高稳定性。其中,回收某个数据传输连接的方式可为关闭该数据传输连接对应的消息通道中的连接关闭通道。
120.例如,如果原数据传输连接的建立时间早于新数据传输连接的建立时间,则关闭原数据传输连接对应的消息通道中的连接关闭通道,实现该原数据传输连接的回收。之后,第一设备与服务器之间仅存在新数据传输连接,第一设备后续产生的通信请求均通过性数据传输连接发送至服务器,再发送至第二设备。
121.s2、调用读取协程,从通信请求中读取通信数据,将通信数据发送至连接读取通道。
122.在一些实施例中,协程和线程的不同,协程运行在线程之上,当一个协程执行完成后,可以选择主动让出,让另一个协程运行在当前线程之上。协程并没有增加线程数量,只是在线程的基础之上通过分时复用的方式运行多个协程,而且协程的切换在用户态完成,切换的代价比线程从用户态到内核态的代价小很多。
123.在一些实施例中,协程也可以一直占用一个线程。
124.在接收到通信请求,并对应创建消息通道之后,即可实现通信请求中通信数据的发送。此时,启动读取协程(readgoroutine)。读取协程可在创建消息通道时实时同步创建,与连接读取通道匹配,以辅助连接读取通道实现通信请求的接收。读取协程用于从通信请求中读取通信数据,而后写入连接读取通道。通信数据为第一设备产生的需发送至第二设备的数据,可为会话消息、状态变更消息等。
125.由于服务器内配置有数据传输连接的独立接口(websocket原生api),因此,由读取协程实时监听该websocket原生api的readmessage方法,将从数据传输连接中读取的通信数据先写入连接读取通道(readchannel),然后继续执行readmessage方法。
126.第一设备可产生多个通信请求,读取协程依次从每个通信请求中读取到通信数
据,再依次写入连接读取通道,而后再执行readmessage方法读取下一个通信请求中的通信数据。其中,读取顺序为每个通信请求的产生时间的先后顺序,写入顺序为每个通信数据的读取完成时间的先后顺序。
127.此时,连接读取通道中存储的通信数据为至少一个,各个通信数据按照写入时间的先后顺序排序,最早写入的通信数据位于首位,最晚写入的通信数据位于末尾。
128.s3、从连接读取通道内读取待发送的通信数据,经过数据处理后,将得到的通信数据发送至连接发送通道。
129.连接读取通道内的通信数据即为发送至第二设备的数据,在发送之前,可对待发送的通信数据进行数据处理。此时,从读取通道内读取待发送的通信数据。如果连接读取通道内存储有多个按序排列的通信数据,则待发送的通信数据为连接读取通道中位列首位的通信数据。
130.将待发送的通信数据从连接读取通道内取出,并经过数据处理后,将得到的通信数据写入连接发送通道内。连接发送通道内存储有需要发送至第二设备的经过数据处理后的通信数据。
131.在连接发送通道内存储多个数据处理后的通信数据时,每个数据处理后的通信数据按照写入时间的先后顺序进行排序,最早写入的通信数据位于首位,最晚写入的通信数据位于末尾。
132.s4、调用发送协程,从连接发送通道内读取数据处理后的通信数据并发送至第二设备,以建立第一设备与第二设备的数据传输连接,第二设备是指与第一设备基于同一会议id加入同一视频会议的设备。
133.在服务器需要向位于同一视频会议的第二设备发送通信数据时,启动发送协程(writegoroutine),发送协程可在创建消息通道时实时同步创建,与连接发送通道匹配,以辅助连接发送通道实现通信请求的发送。发送协程用于从连接发送通道内读取数据处理后的通信数据。
134.此时,发送协程将需要发送到第二设备的通信数据从连接发送通道(writechannel)取出,并通过websocket原生api的writemessage方法发送至第二设备。如果第二设备包括多个被动接收信息的显示设备,则发送协程需将从连接发送通道内读取的通信数据分别发送至各个显示设备。
135.在第一设备产生多个通信请求时,相应的连接发送通道内会存储多个数据处理后的通信数据。在发送至第二设备时,发送协程依次从连接发送通道内读取通信数据,读取顺序为每个数据处理后的通信数据的写入完成时间的先后顺序。此时,发送协程先读取连接发送通道内位于首位的数据处理后的通信数据,在完成发送后,再读取位于第二位的数据处理后的通信数据,依此类推。
136.发送协程在发送成功之后,即完成一次通信数据传输后,继续从连接发送通道取出要发送的下一个通信数据,并发送至第二设备。第二设备在接收到服务器发送的数据处理后的通信数据后,即可实现第一设备与第二设备的数据传输连接。
137.可见,在服务器内维护多个数据传输连接时,通过为每个通信请求建立对应的消息通道(连接读取通道、连接发送通道、连接关闭通道),可以实现线程安全的通信请求收发,解决了websocket原生api不是线程安全的问题,在消息通道中的通信数据会按顺序依
次执行,相互之间不会影响,保证数据传输连接的稳定性。
138.在一些实施例中,视频会议过程中,服务器实时监听每个通信请求对应的消息通道,以及时确定第一设备产生的某个通信请求对应的数据传输连接是否有效,在无效时,需要将对应的数据传输连接回收。
139.而每个数据传输连接是否有效可通过连接关闭通道来实现,连接关闭通道可同时控制连接读取通道和连接发送通道的读取状态,保证二者状态同步。例如,如果第一设备主动关闭与服务器的连接,此时,无需再进行通信请求的读取和发送,则关闭连接关闭通道,以将对应的数据传输连接关闭,实现回收。
140.在一些实施例中,在通信请求接收过程中实现数据传输连接的回收时,控制器被进一步配置为:
141.步骤51、在从连接读取通道内读取待发送的通信数据时,获取连接关闭通道的状态值。
142.步骤52、如果获取到连接关闭通道的状态值,则停止从连接读取通道内读取待发送的通信数据。
143.步骤53、如果未获取到连接关闭通道的状态值,则继续从连接读取通道内读取待发送的通信数据,进行数据处理。
144.在从连接读取通道内读取待发送的通信数据过程中,服务器实时且同时监听连接读取通道(readchannel)和连接关闭通道(closechannel),即实时获取连接关闭通道的状态值。
145.连接关闭通道采用阻塞操作的方式来控制连接读取通道的开启和关闭,如果连接关闭通道开启,说明数据传输连接还在进行,此时,无法获取到连接关闭通道的状态值。如果连接关闭通道关闭,说明数据传输连接被关闭,此时,可获取到连接关闭通道的状态值。
146.如果本端用户(第一设备)将其与服务器的数据传输连接关闭,那么,则可以获取到连接关闭通道的状态值,说明需要将数据传输连接关闭。此时,退出通信请求接收协程,即停止从连接读取通道内读取待发送的通信数据。
147.如果本端用户(第一设备)未将其与服务器的数据传输连接关闭,始终保持连接状态,那么,则无法获取到连接关闭通道的状态值,说明不需要将数据传输连接关闭。此时,继续从连接读取通道内读取待发送的通信数据,并执行后续操作。
148.可见,在第一设备与服务器之间的数据传输连接发生变化时,如通信数据传输完毕、用户主动退出视频会议、因网络异常等原因退出视频会议等情况,此时,由于第一设备无法再次产生通信请求,对应的数据传输连接无效。因此,需要将对应的数据传输连接回收,避免占用资源,实现数据传输连接的高效管理。
149.在一些实施例中,在通信请求发送过程中实现数据传输连接的回收时,控制器被进一步配置为:
150.步骤61、在从连接发送通道内读取数据处理后的通信数据时,获取连接关闭通道的状态值。
151.步骤62、如果获取到连接关闭通道的状态值,则停止向连接发送通道内发送数据处理后的通信数据。
152.步骤63、如果未获取到连接关闭通道的状态值,则继续向连接发送通道内发送数
据处理后的通信数据,以发送至第二设备。
153.在从连接发送通道内读取数据处理后的通信数据过程中,服务器实时且同时监听连接发送通道(writechannel)和连接关闭通道(closechannel),即实时获取连接关闭通道的状态值。
154.连接关闭通道采用阻塞操作的方式来控制连接读取通道的开启和关闭,如果连接关闭通道开启,说明数据传输连接还在进行,此时,无法获取到连接关闭通道的状态值。如果连接关闭通道关闭,说明数据传输连接被关闭,此时,可获取到连接关闭通道的状态值。
155.如果对端用户(第二设备)将其与服务器的数据传输连接关闭,则可以获取到连接关闭通道的状态值,说明需要将数据传输连接关闭,无法再向第二设备发送通信数据。此时,退出通信请求发送协程,即停止向连接发送通道内发送数据处理后的通信数据,也即停止从连接发送通道内读取数据处理后的通信数据,无需发送至第二设备。
156.如果对端用户(第二设备)未将其与服务器的数据传输连接关闭,始终保持连接状态,则无法获取到连接关闭通道的状态值,说明不需要将数据传输连接关闭。此时,继续向连接发送通道内发送数据处理后的通信数据,也即继续从连接发送通道内读取数据处理后的通信数据,并发送至第二设备。
157.可见,在第二设备与服务器之间的数据传输连接发生变化时,如通信数据传输完毕、用户主动退出视频会议、因网络异常等原因退出视频会议等情况,此时,由于第二设备无法再次接收通信请求,对应的数据传输连接无效。因此,需要将对应的数据传输连接回收,避免占用资源,实现数据传输连接的高效管理。
158.在一些实施例中,在第一设备提供服务器与第二设备建立数据传输连接后,需要实时对每个数据传输连接进行检查,以判断该连接是否有效,以进一步确定是否需要回收该连接。
159.为此,在检查数据传输连接时,控制器被进一步配置为执行下述步骤:
160.步骤71、在建立第一设备与第二设备的数据传输连接后,调用检查协程,按照预设时间间隔向连接读取通道发送检查请求,检查请求用于判断第一设备和第二设备的数据传输连接是否处于使用状态。
161.步骤72、响应于检查请求,获取第一设备和第二设备的数据传输连接的心跳时间。
162.步骤73、如果心跳时间超过预设时间,则确定第一设备和第二设备的数据传输连接未处于使用状态。
163.在建立第一设备与第二设备的数据传输连接后,启动检查协程(checkgoroutine),检查协程可在创建消息通道时实时同步创建,检查协程用于检查数据传输连接是否有效。检查协程内设置有一个定时器,按照预设时间间隔向连接读取通道发送一条检查请求,以确定该连接是否需要回收。预设时间间隔可设定为60秒,也可为其他数值,此处不进行具体限定。
164.检查协程按照预设时间间隔向连接读取通道发送检查请求,以判断第一设备和第二设备的数据传输连接是否仍处于使用状态。在接收到该检查请求后,服务器会及时检查当前数据传输连接的心跳时间,确定连接是否处于使用状态。
165.如果心跳时间未超过预设时间,则第一设备和第二设备的数据传输连接还在继续被使用。如果心跳时间超过预设时间,即超时,说明对应的数据传输连接已未处于使用状
态,为避免占用资源,可将执行该数据传输连接回收的操作。预设时间可设定为60秒或90秒,可基于实际情况而定。
166.在确定数据传输连接未处于使用状态后,所执行数据传输连接回收的操作是将连接关闭通道关闭,此时,可以获取到连接关闭通道的状态值,说明需要将数据传输连接关闭,无法再向第二设备发送通信数据。那么,退出通信请求发送协程,即停止向连接发送通道内发送数据处理后的通信数据,也即停止从连接发送通道内读取数据处理后的通信数据,无需发送至第二设备。
167.在一些实施例中,在第一设备或第二设备主动关闭连接、连接心跳超时等情况时,需要服务器主动回收对应的数据传输连接,关闭连接时通过关闭连接关闭通道来实现。
168.在一些实施例中,如果显示设备端和服务器端均因异常或主动等原因关闭连接关闭通道,则会出现并发现象。此时,为保证连接关闭通道避免进行重复的关闭,在关闭和开启连接关闭通道时,可通过读写锁来进行控制。此时,控制器被进一步配置为:在第一设备和第二设备的数据传输连接未处于使用状态时,调用读写锁,关闭连接关闭通道,以及,重置连接关闭通道的状态值。
169.在第一设备和第二设备的数据传输连接未处于使用状态时,需要及时关闭连接关闭通道,则启动读写锁(mutex)来控制并发关闭的情况。若存在多个关闭动作,读写锁基于每个关闭动作的开始时间,优先响应最早产生关闭动作一方的指令。例如,如果服务器端的关闭动作早于显示设备侧的关闭动作,则读写锁仅响应服务器端产生的关闭请求。
170.由于如果连接关闭通道执行多次关闭动作,会造成连接崩掉,影响正常的数据传输。因此,在读写锁优先执行最早产生的关闭动作时,将连接关闭通道关闭,同时,重置连接关闭通道的状态值,以避免连接关闭通道的再次关闭。
171.例如,读写锁执行服务器端的关闭请求后,连接关闭通道被关闭,此时,可获取到连接关闭通道的状态值。如果还存在产生时间较晚的来自显示设备侧的另一关闭请求,读写锁监测到连接关闭通道的状态值,可获知连接关闭通道已被关闭,则无需再响应显示设备的关闭请求,进而可忽略第二个关闭请求,避免连接关闭通道的重复关闭。
172.在一些实施例中,第一设备每产生一个通信请求,服务器均对应创建一个图6所示的消息通道。每个消息通道包括通信请求接收通道、通信请求发送通道和连接检查通道。通信请求接收通道包括连接读取通道、读取协程和连接关闭通道;通信请求发送通道包括连接发送通道、发送协程和连接关闭通道。连接检查通道为检查协程所对应的通道。各个通信请求分别建立对应的数据传输连接,并基于对应的消息通道实现通信请求的独立发送。服务器通过为每个通信请求创建消息通道,可实现各个通信请求对应数据传输连接的单独维护和管理,连接相互之间互不影响。
173.可见,本发明实施例提供的一种服务器,响应于基于会议id加入视频会议的第一设备发送的通信请求,创建连接读取通道和连接发送通道;调用读取协程从通信请求中读取通信数据,并发送至连接读取通道;从连接读取通道内读取待发送的通信数据,经过数据处理后发送至连接发送通道;调用发送协程从连接发送通道内读取数据处理后的通信数据并发送至第二设备,以建立第一设备与第二设备的数据传输连接。可见,该服务器可实时创建与通信请求对应的消息通道,对对应的数据传输连接进行管理,如连接的建立、检查和回收机制,来提高数据传输连接的可用性、并发性以及唯一性,实现同时维护和管理不同视频
会议及不同显示设备的大量长连接,可保证数据传输连接的稳定性。
174.图5示出了根据一些实施例的数据传输连接的管理方法的流程图。参见图5,本发明实施例提供一种数据传输连接的管理方法,由前述实施例提供的服务器中的控制器执行,所述方法包括:
175.s1、响应于基于会议id加入视频会议的第一设备发送的通信请求,创建用于进行通信请求收发的连接读取通道和连接发送通道;
176.s2、调用读取协程,从所述通信请求中读取通信数据,将所述通信数据发送至所述连接读取通道;
177.s3、从所述连接读取通道内读取待发送的通信数据,经过数据处理后,将得到的通信数据发送至所述连接发送通道;
178.s4、调用发送协程,从所述连接发送通道内读取数据处理后的通信数据并发送至第二设备,以建立所述第一设备与第二设备的数据传输连接,所述第二设备是指与所述第一设备基于同一会议id加入同一视频会议的设备。
179.具体实现中,本发明还提供一种存储介质,其中,该存储介质可存储有程序,该程序执行时可包括本发明提供的数据传输连接的管理方法的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(英文:read

only memory,简称:rom)或随机存储记忆体(英文:random access memory,简称:ram)等。本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等。
180.本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于数据传输连接的管理方法实施例而言,由于其基本相似于服务器实施例,所以描述的比较简单,相关之处参见服务器实施例中的说明即可。
181.最后应说明的是:以上各实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述各实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。
182.为了方便解释,已经结合具体的实施方式进行了上述说明。但是,上述示例性的讨论不是意图穷尽或者将实施方式限定到上述公开的具体形式。根据上述的教导,可以得到多种修改和变形。上述实施方式的选择和描述是为了更好的解释原理以及实际的应用,从而使得本领域技术人员更好的使用所述实施方式以及适于具体使用考虑的各种不同的变形的实施方式。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献