CN115361348B - 由数据采集设备执行的与web浏览器通信的方法 - Google Patents
由数据采集设备执行的与web浏览器通信的方法 Download PDFInfo
- Publication number
- CN115361348B CN115361348B CN202211280649.4A CN202211280649A CN115361348B CN 115361348 B CN115361348 B CN 115361348B CN 202211280649 A CN202211280649 A CN 202211280649A CN 115361348 B CN115361348 B CN 115361348B
- Authority
- CN
- China
- Prior art keywords
- queue
- data
- web server
- web browser
- websocket connection
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
Abstract
本公开的实施例提供一种由数据采集设备执行的与web浏览器通信的方法。在该方法中,作为消费者绑定由消息中间件创建的第一队列并作为生产者绑定由所述消息中间件创建的第二队列。监听第一队列中是否有指令入队。响应于第一队列中有指令入队,消费并执行指令。将采集数据推送到第二队列。其中,指令由web浏览器发送到web服务器并由web服务器推送到第一队列。web服务器作为生产者绑定第一队列并作为消费者绑定第二队列。
Description
技术领域
本公开的实施例涉及通信技术领域,具体地,涉及由数据采集设备执行的与web浏览器通信的方法。
背景技术
近年来数据采集技术迅速发展并被应用到各个领域,例如,航拍、测绘、侦查、探测等领域。数据采集设备包括例如无人机、无人机探测设备(用于无源探测无人机的相关数据)、物联网设备等。数据采集设备的应用范围越来越广,因此希望能够便捷地操控数据采集设备,特别是分布式数据采集设备。在一些应用场景下,期望通过web(网页)浏览器来与数据采集设备进行双向数据交互,以便控制数据采集设备操作以及接收数据采集设备所获取的数据。web浏览器可借助web服务器来与数据采集设备进行数据交互。
发明内容
本文中描述的实施例提供了一种由数据采集设备执行的与web浏览器通信的方法、一种由web浏览器执行的与数据采集设备通信的方法、一种由web服务器执行的用于处理web浏览器与数据采集设备之间的通信的方法、一种数据采集设备、一种web浏览器、一种web服务器、以及存储有计算机程序的计算机可读存储介质。
根据本公开的第一方面,提供了一种由数据采集设备执行的与web浏览器通信的方法。在该方法中,作为消费者绑定由消息中间件创建的第一队列并作为生产者绑定由所述消息中间件创建的第二队列。监听第一队列中是否有指令入队。响应于第一队列中有指令入队,消费并执行指令。将采集数据推送到第二队列。其中,指令由web浏览器发送到web服务器并由web服务器推送到第一队列。web服务器作为生产者绑定第一队列并作为消费者绑定第二队列。
在本公开的一些实施例中,数据采集设备是分布式无人机探测设备。采集数据包括以下中的一个或多个:对无人机的探测结果、分布式无人机探测设备的工作状态数据、以及与分布式无人机探测设备相关联的无人机反制设备的工作状态数据。
在本公开的一些实施例中,对无人机的探测结果包括以下中的一个或多个:无人机的位置坐标。
在本公开的一些实施例中,消息中间件还创建有交换器。其中,采集数据通过交换器被推送到第二队列。指令通过交换器被推送到第一队列。
在本公开的一些实施例中,web服务器与web浏览器之间建立有websocket连接。
在本公开的一些实施例中,web服务器监听第二队列。响应于第二队列中有采集数据入队,web服务器消费采集数据,并通过websocket连接向web浏览器发送采集数据。
根据本公开的第二方面,提供了一种数据采集设备。该数据采集设备包括至少一个处理器;以及存储有计算机程序的至少一个存储器。当计算机程序由至少一个处理器执行时,使得数据采集设备:作为消费者绑定由消息中间件创建的第一队列并作为生产者绑定由所述消息中间件创建的第二队列;监听第一队列中是否有指令入队;响应于第一队列中有指令入队,消费并执行指令;以及将采集数据推送到第二队列。其中,指令由web浏览器发送到web服务器并由web服务器推送到第一队列。web服务器作为生产者绑定第一队列并作为消费者绑定第二队列。
根据本公开的第三方面,提供了一种存储有计算机程序的计算机可读存储介质,其中,计算机程序在由处理器执行时实现根据本公开的第一方面所述的方法的步骤。
根据本公开的第四方面,提供了一种由web浏览器执行的与数据采集设备通信的方法。在该方法中,创建与web服务器的websocket连接。通过websocket连接从web服务器获取来自数据采集设备的采集数据。通过websocket连接向web服务器发送指令。其中,指令由web服务器推送到由消息中间件创建的第一队列。采集数据由web服务器从由消息中间件创建的第二队列中获得。数据采集设备作为消费者绑定第一队列并作为生产者绑定第二队列。web服务器作为生产者绑定第一队列并作为消费者绑定第二队列。
在本公开的一些实施例中,该方法还包括:响应于从web服务器接收到表示websocket连接异常的指示或者websocket连接断开,尝试建立与web服务器的另一websocket连接;以及响应于尝试指定次数之后无法建立另一websocket连接,放弃建立另一websocket连接的尝试。
根据本公开的第五方面,提供了一种web浏览器。该web浏览器包括至少一个处理器;以及存储有计算机程序的至少一个存储器。当计算机程序由至少一个处理器执行时,使得web浏览器:创建与web服务器的websocket连接;通过websocket连接从web服务器获取来自数据采集设备的采集数据;以及通过websocket连接向web服务器发送指令。其中,指令由web服务器推送到由消息中间件创建的第一队列。采集数据由web服务器从由消息中间件创建的第二队列中获得。数据采集设备作为消费者绑定第一队列并作为生产者绑定第二队列。web服务器作为生产者绑定第一队列并作为消费者绑定第二队列。
在本公开的一些实施例中,计算机程序在由至少一个处理器执行时使得web浏览器还:响应于从web服务器接收到表示websocket连接异常的指示或者websocket连接断开,尝试建立与web服务器的另一websocket连接;以及响应于尝试指定次数之后无法建立另一websocket连接,放弃建立另一websocket连接的尝试。
根据本公开的第六方面,提供了一种存储有计算机程序的计算机可读存储介质,其中,计算机程序在由处理器执行时实现根据本公开的第四方面所述的方法的步骤。
根据本公开的第七方面,提供了一种由web服务器执行的用于处理web浏览器与数据采集设备之间的通信的方法。web服务器与web浏览器之间建立有websocket连接。在该方法中,通过websocket连接从web浏览器接收指令。作为生产者绑定由消息中间件创建的第一队列并作为消费者绑定由消息中间件创建的第二队列。将指令推送到第一队列。监听第二队列中是否有采集数据入队。响应于第二队列中有采集数据入队,消费采集数据,并通过websocket连接向web浏览器发送采集数据。其中,数据采集设备作为消费者绑定第一队列并作为生产者绑定第二队列。采集数据由数据采集设备推送到第二队列。
在本公开的一些实施例中,在将指令推送到第一队列的步骤中,对指令进行封装,以及将经封装的指令发送给由消息中间件创建的交换器。其中,经封装的指令通过交换器被推送到第一队列。
在本公开的一些实施例中,在通过websocket连接向web浏览器发送采集数据的步骤中,对采集数据进行业务处理,以及通过websocket连接向web浏览器发送经业务处理的采集数据。
在本公开的一些实施例中,方法还包括:保存websocket连接的会话信息;定时向web浏览器发送心跳包;响应于在指定时间内没有接收到来自web浏览器的心跳包应答,确定websocket连接已经失效,并断开与web浏览器的会话连接。
根据本公开的第八方面,提供了一种web服务器。该web服务器包括至少一个处理器;以及存储有计算机程序的至少一个存储器。当计算机程序由至少一个处理器执行时,使得web服务器:通过websocket连接从web浏览器接收指令;作为生产者绑定由消息中间件创建的第一队列并作为消费者绑定由消息中间件创建的第二队列;将指令推送到第一队列;监听第二队列中是否有采集数据入队;以及响应于第二队列中有采集数据入队,消费采集数据,并通过websocket连接向web浏览器发送采集数据。其中,数据采集设备作为消费者绑定第一队列并作为生产者绑定第二队列。采集数据由数据采集设备推送到第二队列。
在本公开的一些实施例中,计算机程序在由至少一个处理器执行时使得web服务器通过以下操作来将指令推送到第一队列:对指令进行封装;以及将经封装的指令发送给由消息中间件创建的交换器。其中,经封装的指令通过交换器被推送到第一队列。
在本公开的一些实施例中,计算机程序在由至少一个处理器执行时使得web服务器通过以下操作来通过websocket连接向web浏览器发送采集数据:对采集数据进行业务处理;以及通过websocket连接向web浏览器发送经业务处理的采集数据。
在本公开的一些实施例中,计算机程序在由至少一个处理器执行时使得web服务器还:保存websocket连接的会话信息;定时向web浏览器发送心跳包;响应于在指定时间内没有接收到来自web浏览器的心跳包应答,确定websocket连接已经失效,并断开与web浏览器的会话连接。
根据本公开的第九方面,提供了一种存储有计算机程序的计算机可读存储介质,其中,计算机程序在由处理器执行时实现根据本公开的第七方面所述的方法的步骤。
附图说明
为了更清楚地说明本公开的实施例的技术方案,下面将对实施例的附图进行简要说明,应当知道,以下描述的附图仅仅涉及本公开的一些实施例,而非对本公开的限制,其中:
图1是根据本公开的实施例的数据采集设备与web浏览器通信的过程的示意性组合流程图和信令方案;
图2是根据本公开的实施例的web服务器向数据采集设备发送指令的过程的示意图;
图3是根据本公开的实施例的数据采集设备向web服务器发送采集数据的过程的示意图;
图4是根据本公开的实施例的由数据采集设备执行的与web浏览器通信的方法的示意性流程图;
图5是根据本公开的实施例的由web浏览器执行的与数据采集设备通信的方法的示意性流程图;
图6是根据本公开的实施例的由web服务器执行的用于处理web浏览器与数据采集设备之间的通信的方法的示意性流程图;
图7是根据本公开的实施例的数据采集设备的示意性框图;
图8是根据本公开的实施例的web浏览器的示意性框图;以及
图9是根据本公开的实施例的web服务器的示意性框图。
在附图中,最后两位数字相同的标记对应于相同的元素。需要注意的是,附图中的元素是示意性的,没有按比例绘制。
具体实施方式
为了使本公开的实施例的目的、技术方案和优点更加清楚,下面将结合附图,对本公开的实施例的技术方案进行清楚、完整的描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域技术人员在无需创造性劳动的前提下所获得的所有其它实施例,也都属于本公开保护的范围。
除非另外定义,否则在此使用的所有术语(包括技术和科学术语)具有与本公开主题所属领域的技术人员所通常理解的相同含义。进一步将理解的是,诸如在通常使用的词典中定义的那些的术语应解释为具有与说明书上下文和相关技术中它们的含义一致的含义,并且将不以理想化或过于正式的形式来解释,除非在此另外明确定义。另外,诸如“第一”和“第二”的术语仅用于将一个元素(或元素的一部分)与另一个元素(或元素的另一部分)区分开。
如上所述,在一些应用场景下,可通过web浏览器来与数据采集设备(例如,无人机探测设备、物联网设备等)进行双向数据交互。在一种实施方式中,web浏览器可通过短轮训方式访问web服务器,web服务器通过Java本地接口(Java Native Interface,简称JNI)调用动态链接库(Dynamic Link Library,简称DLL动态库)的方式来获取数据采集设备所采集的数据(在上下文中,可称为“采集数据”,在数据采集设备是无人机探测设备的情况下,采集数据可例如包括对无人机的探测结果(无人机的位置坐标)、无人机探测设备的心跳数据、以及与分布式无人机探测设备相关联的无人机反制设备(该无人机反制设备可以对无人机进行反制操作,例如,切断无人机的信号等)的心跳数据)。
这种实施方式存在以下不足:
(1)由于web浏览器通过短轮训方式访问web服务器,因此web浏览器需要定时请求web服务器来促使数据更新,这样大量耗费web服务器的内存和宽带资源。在不停的请求web服务器的过程中,很多时候并没有新的数据更新,因此绝大部分请求都是无效请求,并且数据不一定是实时更新。数据是否及时更新取决于设定的请求间隔,因此数据更新基本上存在延迟。
(2)web服务器与数据采集设备通过JNI调用DLL动态库的方式来获取采集数据,因此web服务器的代码高度依赖于JNI的调用逻辑,使得web服务器与数据采集设备之间的代码耦合性增加,可维护性降低,代码开发者的工作量增大,耗时且易于出错。此外,web服务器的开发者和数据采集设备的开发者可能不同,因此可能需要多人协作。由于多个开发者的代码风格难以统一,因此多人协作容易造成代码的可维护性大大降低,不利于代码迭代,通常也会丧失平台的可移植性。
在另一种实施方式中,web浏览器可通过长轮训方式访问web服务器,web服务器与数据采集设备通过套接字(Socket)连接通信。
这种实施方式存在以下不足:
(1)web浏览器通过长轮训方式访问web服务器。在长轮询过程中,web浏览器请求web服务器,web服务器并不即时返回内容。而是web服务器保持该连接(主要通过死循环来保持,此外定时休眠,超时后断开连接),当有内容更新的时候才返回内容给web浏览器。从流程上讲,可以理解为通过由web服务器向web浏览器推送内容来解决短轮询的问题(数据实时更新的问题)。但是,web服务器在挂起的时候比较消耗内存。如果保持多个长连接,web服务器的压力会过大。
(2)web服务器作为Socket连接的客户端,数据采集设备作为Socket连接的服务端。服务端的Socket需要绑定IP地址和端口,客户端的Socket则根据服务端绑定的IP地址和端口连接到服务端。连接成功后,服务端的主要功能是一直处于阻塞监听(accept)状态,监听来自客户端的Socket的请求。由于等待消息的特性(即服务端的程序需要一直监听是否有响应消息),因此服务端需要开启一个独立的线程来执行等待消息这项任务。在独立的线程中执行监听操作能够保证应用的其他部分能够正常执行(如响应用户输入),因为通过读取(read)方法来等待数据传输所需要的时间是不确定的,对于需要建立许多Socket连接来进行通信的程序来说,即使在每一个Socket中创建一个线程也会显得难以应对。同时也可以看出,当分布式部署多个数据采集设备时,需要web服务器建立多个Socket连接与每个数据采集设备进行连接通信,资源开销增加且程序维护的难度也增加。
为了实现数据采集设备与web浏览器之间的数据交互是双向、低延迟、可靠、异步、解耦的交互,本公开的实施例提出了使用websocket连接来代替上述两种实施方式中的短轮询方式和长轮询方式,并使用消息队列来代替上述实施方式中的JNI和Socket连接。
图1示出根据本公开的实施例的数据采集设备与web浏览器通信的过程的示意性组合流程图和信令方案。web浏览器11在动作101处建立与web服务器12的websocket连接。web浏览器11可通过web服务器12的IP地址和端口号来创建websocket连接。该websocket连接是双向连接。在一个示例中,web浏览器11可通过与web服务器12以websocket协议进行握手来创建websocket连接。web服务器12保存websocket连接的会话(session)信息,会话用于web浏览器11发送数据给web服务器12以及web服务器12主动推送数据到web浏览器11。web浏览器11通过websocket来实现以异步回调的方式接收消息。这样当在web浏览器11与web服务器12之间建立通信连接时,可以做到持久性的连接。
尽管在图1中未示出,在本公开的一些实施例中,web服务器12可开启定时心跳来监测会话(即监测websocket连接)是否有效。在一个示例中,web服务器12可定时向web浏览器11发送心跳包(也可被称为心跳ping包)。如果在指定时间内web服务器12没有接收到来自web浏览器11的心跳包应答(也可被称为心跳pong包),则web服务器12可确定websocket连接已经失效,并断开与web浏览器11的会话连接。在websocket连接异常的情况下,web服务器12可向web浏览器11发送表示websocket连接异常的指示。web浏览器11如果从web服务器12接收到表示websocket连接异常的指示,或者如果web浏览器11发现websocket连接已断开,则web浏览器11可尝试建立与web服务器12的另一websocket连接。如果尝试指定次数(例如,3次)之后无法建立与web服务器12的另一websocket连接,则web浏览器11可放弃建立与web服务器12的另一websocket连接的尝试。
在web浏览器11建立与web服务器12的websocket连接(动作101)之后,web浏览器11在动作102处通过已建立的websocket连接来发送指令。该指令旨在控制数据采集设备14的操作。在本公开的一些实施例中,该指令可由数据采集设备14的操作者输入到web浏览器11。
web服务器12可在动作103处对指令进行封装。消息中间件13在动作104处创建第一队列和第二队列。第一队列和第二队列是消息队列(MQ)。在动作105处,web服务器12作为生产者被绑定到第一队列,并作为消费者被绑定到第二队列。在动作106处,数据采集设备14作为消费者被绑定到第一队列,并作为生产者被绑定到第二队列。消费者负责监听队列取数据,生产者负责往队列放数据。对于数据采集设备14,第一队列用于接收指令。第二队列用于发送采集数据(例如,数据采集设备14所采集的数据、和/或数据采集设备14自身的工作状态数据)。在本公开的一些实施例中,消息中间件13还可在动作104处创建交换器。交换器可通过与队列绑定的路由键来区分哪些数据应该放入第一队列,哪些数据应该放入第二队列。
应注意,动作104可在动作101之前执行,也可以在动作101至动作103执行的过程中的任一时间点执行。动作104只需要在动作105和动作106之前执行即可。动作106可在动作105之前执行,也可以在动作105之后执行,还可以与动作105并行地执行。
在动作109处,数据采集设备14可监听第一队列。在动作107处,经封装的指令通过交换器被推送到第一队列。应注意,动作109需要在动作107之前执行,以便数据采集设备14及时发现第一队列中的指令。在动作110处,数据采集设备14可获得第一队列中的指令。图2示出根据本公开的实施例的web服务器12向数据采集设备14发送指令的过程的示意图。在图2的示例中,web服务器12向消息中间件13的交换器131发送指令(经封装的指令)。由于指令来自web服务器12,因此交换器131将指令入队到第一队列132。数据采集设备14保持监听第一队列132。当第一队列132中有指令入队,数据采集设备14立即消费指令。在上下文中,消费指的是从队列中获取数据并删除该队列中已被获取的数据。数据采集设备14所消费的指令可触发数据采集设备14执行对应的操作。
如上所述,数据采集设备14可使用第二队列来向web服务器12发送采集数据。在动作108处,web服务器12可监听第二队列。应注意,动作108可在动作101之前执行,也可以在动作101至动作107执行的过程中的任一时间点执行。动作108只需要在动作111之前执行即可。在动作111处,数据采集设备14可获得采集数据。数据采集设备14可对采集数据进行封装,以数据包的形式将经封装的采集数据推送到第二队列。在web服务器12监听到第二队列中有采集数据(经封装的采集数据)入队的情况下,web服务器12可在动作112处从第二队列消费采集数据(经封装的采集数据)。
图3示出根据本公开的实施例的数据采集设备14向web服务器12发送采集数据的过程的示意图。在图3的示例中,数据采集设备14向交换器131发送采集数据(经封装的采集数据)。由于采集数据来自数据采集设备14,因此交换器131将采集数据入队到第二队列134。web服务器12保持监听第二队列134。当第二队列134中有采集数据入队,web服务器12立即消费采集数据。
回到图1,在动作113处,web服务器12对采集数据进行业务处理(例如,解封装等)。在动作114处,web服务器12通过websocket连接(例如,session长连接)向web浏览器11发送经业务处理的采集数据。web浏览器11可将采集数据用于业务显示及处理。
本公开的实施例使用websocket连接弥补web浏览器11与web服务器12之间通过短轮询和长轮训方式通信的不足。通过websocket来实现以异步回调的方式接收消息。websocket通过自己的 WS 协议(此处与HTTP协议有所区别)创建基于HTTP request的请求并创建TCP链接。在此之后的数据交换都不需要再次去创建链接,能够实现真正的长连接。建立websocket连接之后,通信双方都可以在任何时刻向另一方发送数据,因此能够及时更新数据且不会浪费系统资源。
此外,本公开的实施例使用消息队列替代JNI或者socket连接。使用消息队列可以实现web服务器12与数据采集设备14异步解耦,通信双方只关注自身的业务逻辑,相互之间不需要任何代码冗余。消息队列只是负责双方数据交互的载体。生产者只需要将数据放入队列,消费者自动及时取出数据处理。消费者不需要关心生产者是谁,生产者也不需要关注数据是被谁消费。根据约定的队列,数据自动流转,同时也不用担心数据丢失,使用消息队列持久化机制和消费者应答机制,能够保证数据安全可靠。
上述过程保障了web服务器12只要有数据就实时主动推送数据到web浏览器11,数据采集设备14只要有数据就实时主动推送数据到web服务器12。这样提高了数据采集设备14与web浏览器11之间的通信效率。通过上述过程,建立起了数据采集设备14与web浏览器11的双向连接,实现数据采集设备14与web浏览器11之间的低延迟、异步、解耦通信。
图4示出根据本公开的实施例的由数据采集设备执行的与web浏览器通信的方法400的示意性流程图。在本公开的一些实施例中,数据采集设备例如是无人机探测设备(例如,分布式无人机探测设备)、物联网设备等。下面参考图4来描述数据采集设备所执行的与web浏览器通信的过程。
在图4的框S402处,数据采集设备作为消费者绑定由消息中间件创建的第一队列并作为生产者绑定由消息中间件创建的第二队列。对于数据采集设备,第一队列用于接收指令。第二队列用于发送采集数据。在本公开的一些实施例中,消息中间件还可创建交换器。交换器可用于区分哪些数据应该放入第一队列,哪些数据应该放入第二队列。
在框S404处,数据采集设备监听第一队列中是否有指令入队。这里的指令是由web浏览器通过websocket连接发送到web服务器并由web服务器推送到第一队列。web服务器作为生产者绑定第一队列。在本公开的一些实施例中,可以通过定时查看第一队列的队尾指针是否增加来监听第一队列中是否有指令入队。定时时长可根据功耗来配置。如果第一队列的队尾指针增加,则表示第一队列中有指令入队。
如果第一队列中没有指令入队(在框S406处为“否”),则过程回到框S404,数据采集设备继续监听第一队列中是否有指令入队。如果第一队列中有指令入队(在框S406处为“是”),在框S408处数据采集设备消费并执行指令。然后,在框S410处,数据采集设备将采集数据推送到第二队列。web服务器作为消费者绑定第二队列。
在本公开的一些实施例中,例如,在定时采集数据的模式中,数据采集设备可以主动将采集数据推送到第二队列,而不需要在接收到来自web浏览器的指令之后才将采集数据推送到第二队列。因此,上述过程也包括从框S402直接到框S410的步骤。在框S410处所执行的操作可以在框S402之后的任一时刻执行。
图5示出根据本公开的实施例的由web浏览器执行的与数据采集设备通信的方法500的示意性流程图。在图5的框S502处,web浏览器创建与web服务器的websocket连接。web浏览器可通过websocket来实现以异步回调的方式接收消息。
在框S504处,web浏览器通过websocket连接从web服务器获取来自数据采集设备的采集数据。其中,采集数据由web服务器从由消息中间件创建的第二队列中获得。
在框S506处,web浏览器通过websocket连接向web服务器发送指令。其中,指令由web服务器推送到由消息中间件创建的第一队列。数据采集设备作为消费者绑定第一队列并作为生产者绑定第二队列。web服务器作为生产者绑定第一队列并作为消费者绑定第二队列。
在框S506处执行的操作可以在框S504之前执行,也可以与框S504处所执行的操作并行地执行。
在本公开的一些实施例中,方法500还可包括:如果从web服务器接收到表示websocket连接异常的指示或者websocket连接断开,则web浏览器尝试建立与web服务器的另一websocket连接;如果尝试指定次数之后无法建立另一websocket连接,则web浏览器放弃建立另一websocket连接的尝试。
图6示出根据本公开的实施例的由web服务器执行的用于处理web浏览器与数据采集设备之间的通信的方法600的示意性流程图。
在图6的框S602处,web服务器通过websocket连接从web浏览器接收指令。该指令可指示要控制哪个数据采集设备。
在框S603处,web服务器作为生产者绑定由消息中间件创建的第一队列并作为消费者绑定由消息中间件创建的第二队列。对于web服务器,第一队列用于发送指令。第二队列用于接收采集数据。在本公开的一些实施例中,消息中间件还可创建交换器。交换器可用于区分哪些数据应该放入第一队列,哪些数据应该放入第二队列。
在框S604处,web服务器将指令推送到第一队列。在本公开的一些实施例中,在将指令推送到第一队列之前,web服务器可先对指令进行封装。然后web服务器将经封装的指令发送给由消息中间件创建的交换器。经封装的指令通过交换器被推送到第一队列。
在框S606处,web服务器监听第二队列中是否有采集数据入队。在本公开的一些实施例中,可以通过定时查看第二队列的队尾指针是否增加来监听第二队列中是否有采集数据入队。定时时长可根据功耗来配置。如果第二队列的队尾指针增加,则表示第二队列中有采集数据入队。
如果第二队列中没有采集数据入队(在框S608处为“否”),则过程回到框S606处,web服务器继续监听第二队列中是否有采集数据入队。如果第二队列中有采集数据入队(在框S608处为“是”),则在框S610处web服务器消费采集数据。
然后,在框S612处,web服务器通过websocket连接向web浏览器发送采集数据。在本公开的一些实施例中,在向web浏览器发送采集数据之前,web服务器可先对采集数据进行业务处理(例如,解封装等)。然后,web服务器通过websocket连接向web浏览器发送经业务处理的采集数据。
在本公开的一些实施例中,方法600还可包括:web服务器保存websocket连接的会话信息;web服务器定时向web浏览器发送心跳包;如果在指定时间内没有接收到来自web浏览器的心跳包应答,则web服务器确定websocket连接已经失效,并断开与web浏览器的会话连接。
图7示出根据本公开的实施例的数据采集设备700的示意性框图。如图7所示,该数据采集设备700可包括处理器710和存储有计算机程序的存储器720。当计算机程序由处理器710执行时,使得数据采集设备700可执行如图4所示的方法400的步骤。在一个示例中,数据采集设备700可以是无人机探测设备、物联网设备等。数据采集设备700可作为消费者绑定由消息中间件创建的第一队列并作为生产者绑定由消息中间件创建的第二队列。数据采集设备700可监听第一队列中是否有指令入队。其中,指令由web浏览器发送到web服务器并由web服务器推送到第一队列。响应于第一队列中有指令入队,数据采集设备700可消费并执行指令。数据采集设备700可将采集数据推送到第二队列。web服务器作为生产者绑定第一队列并作为消费者绑定第二队列。
在本公开的实施例中,处理器710可以是例如中央处理单元(CPU)、微处理器、数字信号处理器(DSP)、基于多核的处理器架构的处理器等。存储器720可以是使用数据存储技术实现的任何类型的存储器,包括但不限于随机存取存储器、只读存储器、基于半导体的存储器、闪存、磁盘存储器等。
此外,在本公开的实施例中,数据采集设备700也可包括输入设备730,例如传感器、摄像头等,用于采集数据。另外,数据采集设备700还可包括输出设备740,例如指示灯等,用于输出数据采集设备700的运行状态。
图8示出根据本公开的实施例的web浏览器的示意性框图。如图8所示,该web浏览器800可包括处理器810和存储有计算机程序的存储器820。当计算机程序由处理器810执行时,使得web浏览器800可执行如图5所示的方法500的步骤。web浏览器800可创建与web服务器的websocket连接。web浏览器800可通过websocket连接从web服务器获取来自数据采集设备的采集数据。其中,采集数据由web服务器从由消息中间件创建的第二队列中获得。web浏览器800可通过websocket连接向web服务器发送指令。其中,指令由web服务器推送到由消息中间件创建的第一队列。采集数据由web服务器从由消息中间件创建的第二队列中获得。数据采集设备作为消费者绑定第一队列并作为生产者绑定第二队列。web服务器作为生产者绑定第一队列并作为消费者绑定第二队列。
在本公开的一些实施例中,如果从web服务器接收到表示websocket连接异常的指示或者websocket连接断开,web浏览器800可尝试建立与web服务器的另一websocket连接。如果尝试指定次数之后无法建立另一websocket连接,web浏览器800可放弃建立另一websocket连接的尝试。
在本公开的实施例中,处理器810可以是例如中央处理单元(CPU)、微处理器、数字信号处理器(DSP)、基于多核的处理器架构的处理器等。存储器820可以是使用数据存储技术实现的任何类型的存储器,包括但不限于随机存取存储器、只读存储器、基于半导体的存储器、闪存、磁盘存储器等。
此外,在本公开的实施例中,web浏览器800也可包括输入设备830,例如麦克风、键盘、鼠标等,用于输入指令。另外,web浏览器800还可包括输出设备840,例如扩音器、显示器等,用于输出采集数据。
图9示出根据本公开的实施例的web服务器的示意性框图。如图9所示,该web服务器900可包括处理器910和存储有计算机程序的存储器920。当计算机程序由处理器910执行时,使得web服务器900可执行如图6所示的方法600的步骤。web服务器900可通过websocket连接从web浏览器接收指令。web服务器900可作为生产者绑定由消息中间件创建的第一队列并作为消费者绑定由消息中间件创建的第二队列。web服务器900可将指令推送到第一队列。web服务器900可监听第二队列中是否有采集数据入队。如果第二队列中有采集数据入队,web服务器900可消费采集数据,并通过websocket连接向web浏览器发送采集数据。其中,数据采集设备作为消费者绑定第一队列并作为生产者绑定第二队列。采集数据由数据采集设备推送到第二队列。
在本公开的一些实施例中,web服务器900可对指令进行封装。web服务器900可将经封装的指令发送给由消息中间件创建的交换器。
在本公开的一些实施例中,web服务器900可对采集数据进行业务处理。web服务器900可通过websocket连接向web浏览器发送经业务处理的采集数据。
在本公开的一些实施例中,web服务器900可保存websocket连接的会话信息。web服务器900可定时向web浏览器发送心跳包。如果在指定时间内没有接收到来自web浏览器的心跳包应答,web服务器900可确定websocket连接已经失效,并断开与web浏览器的会话连接。
在本公开的实施例中,处理器910可以是例如中央处理单元(CPU)、微处理器、数字信号处理器(DSP)、基于多核的处理器架构的处理器等。存储器920可以是使用数据存储技术实现的任何类型的存储器,包括但不限于随机存取存储器、只读存储器、基于半导体的存储器、闪存、磁盘存储器等。
在本公开的其它实施例中,还提供了一种存储有计算机程序的计算机可读存储介质,其中,计算机程序在由处理器执行时能够实现如图4至图6所示的方法的步骤。
综上所述,本公开的实施例使用websocket连接弥补web浏览器与web服务器之间通过短轮询和长轮训方式通信的不足。通过websocket来实现以异步回调的方式接收消息。websocket通过自己的 WS 协议(此处与HTTP协议有所区别)创建基于HTTP request的请求并创建TCP链接。在此之后的数据交换都不需要再次去创建链接,能够实现真正的长连接。建立websocket连接之后,通信双方都可以在任何时刻向另一方发送数据,因此能够及时更新数据且不会浪费系统资源。
此外,本公开的实施例使用消息队列替代JNI或者socket连接。使用消息队列可以实现web服务器与数据采集设备异步解耦,通信双方只关注自身的业务逻辑,相互之间不需要任何代码冗余。消息队列只是负责双方数据交互的载体。生产者只需要将数据放入队列,消费者自动及时取出数据处理。消费者不需要关心生产者是谁,生产者也不需要关注数据是被谁消费。根据约定的队列,数据自动流转,同时也不用担心数据丢失,使用消息队列持久化机制和消费者应答机制,能够保证数据安全可靠。
附图中的流程图和框图显示了根据本公开的多个实施例的装置和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
除非上下文中另外明确地指出,否则在本文和所附权利要求中所使用的词语的单数形式包括复数,反之亦然。因而,当提及单数时,通常包括相应术语的复数。相似地,措辞“包含”和“包括”将解释为包含在内而不是独占性地。同样地,术语“包括”和“或”应当解释为包括在内的,除非本文中明确禁止这样的解释。在本文中使用术语“示例”之处,特别是当其位于一组术语之后时,所述“示例”仅仅是示例性的和阐述性的,且不应当被认为是独占性的或广泛性的。
适应性的进一步的方面和范围从本文中提供的描述变得明显。应当理解,本申请的各个方面可以单独或者与一个或多个其它方面组合实施。还应当理解,本文中的描述和特定实施例旨在仅说明的目的并不旨在限制本申请的范围。
以上对本公开的若干实施例进行了详细描述,但显然,本领域技术人员可以在不脱离本公开的精神和范围的情况下对本公开的实施例进行各种修改和变型。本公开的保护范围由所附的权利要求限定。
Claims (10)
1.一种由数据采集设备执行的与web浏览器通信的方法,包括:
作为消费者绑定由消息中间件创建的第一队列并作为生产者绑定由所述消息中间件创建的第二队列;
监听所述第一队列中是否有指令入队;
响应于所述第一队列中有指令入队,消费并执行所述指令;以及
将采集数据推送到所述第二队列;
其中,所述指令由所述web浏览器发送到web服务器并由所述web服务器推送到所述第一队列,所述web服务器作为生产者绑定所述第一队列并作为消费者绑定所述第二队列。
2.根据权利要求1所述的方法,其中,所述数据采集设备是分布式无人机探测设备,所述采集数据包括以下中的一个或多个:对无人机的探测结果、所述分布式无人机探测设备的工作状态数据、以及与所述分布式无人机探测设备相关联的无人机反制设备的工作状态数据。
3.根据权利要求1所述的方法,其中,所述消息中间件还创建有交换器;其中,所述采集数据通过所述交换器被推送到所述第二队列,所述指令通过所述交换器被推送到所述第一队列。
4.根据权利要求1所述的方法,其中,所述web服务器与所述web浏览器之间建立有websocket连接。
5.一种由web浏览器执行的与数据采集设备通信的方法,包括:
创建与web服务器的websocket连接;
通过所述websocket连接从所述web服务器获取来自所述数据采集设备的采集数据;以及
通过所述websocket连接向所述web服务器发送指令;
其中,所述指令由所述web服务器推送到由消息中间件创建的第一队列,所述采集数据由所述web服务器从由所述消息中间件创建的第二队列中获得,所述数据采集设备作为消费者绑定所述第一队列并作为生产者绑定所述第二队列并且在所述第一队列中有指令入队时消费并执行所述指令,所述web服务器作为生产者绑定所述第一队列并作为消费者绑定所述第二队列。
6.根据权利要求5所述的方法,还包括:
响应于从所述web服务器接收到表示所述websocket连接异常的指示或者所述websocket连接断开,尝试建立与所述web服务器的另一websocket连接;以及
响应于尝试指定次数之后无法建立所述另一websocket连接,放弃建立所述另一websocket连接的尝试。
7.一种由web服务器执行的用于处理web浏览器与数据采集设备之间的通信的方法,所述web服务器与所述web浏览器之间建立有websocket连接,所述方法包括:
通过所述websocket连接从所述web浏览器接收指令;
作为生产者绑定由消息中间件创建的第一队列并作为消费者绑定由所述消息中间件创建的第二队列;
将所述指令推送到所述第一队列;
监听所述第二队列中是否有采集数据入队;以及
响应于所述第二队列中有采集数据入队,消费所述采集数据,并通过所述websocket连接向所述web浏览器发送所述采集数据;
其中,所述数据采集设备作为消费者绑定所述第一队列并作为生产者绑定所述第二队列并且在所述第一队列中有指令入队时消费并执行所述指令,所述采集数据由所述数据采集设备推送到所述第二队列。
8.根据权利要求7所述的方法,其中,将所述指令推送到所述第一队列包括:
对所述指令进行封装;以及
将经封装的指令发送给由所述消息中间件创建的交换器;
其中,所述经封装的指令通过所述交换器被推送到所述第一队列。
9.根据权利要求7所述的方法,其中,通过所述websocket连接向所述web浏览器发送所述采集数据包括:
对所述采集数据进行业务处理;以及
通过所述websocket连接向所述web浏览器发送经业务处理的采集数据。
10.根据权利要求7所述的方法,还包括:
保存所述websocket连接的会话信息;
定时向所述web浏览器发送心跳包;
响应于在指定时间内没有接收到来自所述web浏览器的心跳包应答,确定所述websocket连接已经失效,并断开与所述web浏览器的会话连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211280649.4A CN115361348B (zh) | 2022-10-19 | 2022-10-19 | 由数据采集设备执行的与web浏览器通信的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211280649.4A CN115361348B (zh) | 2022-10-19 | 2022-10-19 | 由数据采集设备执行的与web浏览器通信的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115361348A CN115361348A (zh) | 2022-11-18 |
CN115361348B true CN115361348B (zh) | 2023-01-10 |
Family
ID=84007623
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211280649.4A Active CN115361348B (zh) | 2022-10-19 | 2022-10-19 | 由数据采集设备执行的与web浏览器通信的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115361348B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115766689A (zh) * | 2023-01-10 | 2023-03-07 | 理工全盛(北京)科技有限公司 | web服务端与无人机探测及反制设备双向通信的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109889454A (zh) * | 2019-02-26 | 2019-06-14 | 浪潮软件集团有限公司 | 一种微服务架构的消息推送装置及方法 |
CN110460366A (zh) * | 2019-07-12 | 2019-11-15 | 视联动力信息技术股份有限公司 | 一种无人机数据对接方法、系统、电子设备及存储介质 |
CN111031094A (zh) * | 2019-11-06 | 2020-04-17 | 远景智能国际私人投资有限公司 | IoT系统中的数据传输方法、装置、设备及存储介质 |
CN112671933A (zh) * | 2021-02-23 | 2021-04-16 | 浙江中控技术股份有限公司 | 一种数据处理方法及系统 |
CN114363422A (zh) * | 2021-12-31 | 2022-04-15 | 深圳市普渡科技有限公司 | 室内机器人及其控制系统和方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11157566B2 (en) * | 2019-08-30 | 2021-10-26 | Afilias Limited | Real time exchange of update information over a network using web sockets coupled to a message queue |
-
2022
- 2022-10-19 CN CN202211280649.4A patent/CN115361348B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109889454A (zh) * | 2019-02-26 | 2019-06-14 | 浪潮软件集团有限公司 | 一种微服务架构的消息推送装置及方法 |
CN110460366A (zh) * | 2019-07-12 | 2019-11-15 | 视联动力信息技术股份有限公司 | 一种无人机数据对接方法、系统、电子设备及存储介质 |
CN111031094A (zh) * | 2019-11-06 | 2020-04-17 | 远景智能国际私人投资有限公司 | IoT系统中的数据传输方法、装置、设备及存储介质 |
WO2021091492A1 (en) * | 2019-11-06 | 2021-05-14 | Envision Digital International Pte. Ltd. | Method and apparatus for transmitting data in iot system, and gateway device and storage medium thereof |
CN112671933A (zh) * | 2021-02-23 | 2021-04-16 | 浙江中控技术股份有限公司 | 一种数据处理方法及系统 |
CN114363422A (zh) * | 2021-12-31 | 2022-04-15 | 深圳市普渡科技有限公司 | 室内机器人及其控制系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN115361348A (zh) | 2022-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108449239B (zh) | 心跳包检测方法、装置、设备和存储介质 | |
US5748897A (en) | Apparatus and method for operating an aggregation of server computers using a dual-role proxy server computer | |
AU2014215935B2 (en) | A system and method for managing message queues in a peer-to-peer communication network | |
CN108833950B (zh) | 一种弹幕消息下发方法、服务器、系统和存储介质 | |
US10027563B2 (en) | Using status inquiry and status response messages to exchange management information | |
CN113326155B (zh) | 一种信息处理方法、装置、系统和存储介质 | |
US11294740B2 (en) | Event to serverless function workflow instance mapping mechanism | |
US11709620B2 (en) | Methods and systems for memory management in a publish and subscribe system | |
CN115361348B (zh) | 由数据采集设备执行的与web浏览器通信的方法 | |
US10536560B2 (en) | System and method for implementing augmented object members for remote procedure call | |
US9407715B2 (en) | Method and system for information exchange utilizing an asynchronous persistent store protocol | |
CN110417782B (zh) | 一种用于智能硬件消息传输的系统、方法及可读介质 | |
CN113760562A (zh) | 链路追踪方法、装置、系统、服务器和存储介质 | |
US20150081774A1 (en) | System and method for implementing augmented object members for remote procedure call | |
US11363099B2 (en) | Methods and systems for enabling publish-subscribe message transmission in a distributed environment | |
CN114979022A (zh) | 远程直接数据存取的实现方法、装置、适配器和存储介质 | |
CN113992740A (zh) | 一种基于自主可控的中间件及数据传输方法 | |
CN109800035B (zh) | 一种算法集成服务框架系统 | |
US8473965B2 (en) | Net-timer daemon | |
US10924576B2 (en) | Relay apparatus, client apparatus, data relay method, and program storage medium in which computer-readable program is stored | |
US20230153159A1 (en) | Hardware Accelerator Service Aggregation | |
WO2023203731A1 (ja) | 演算処理オフロードシステム、演算処理オフロード方法およびプログラム | |
US20220155975A1 (en) | Methods and systems for providing a lockless access to a shared memory region in a publish and subscribe system | |
CN117648210A (zh) | 一种远程访问图形处理器的方法和装置 | |
Wu et al. | Application dependency tracing for message oriented middleware |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |