CN115454362A - 远程打印的实现方法、装置、设备及存储介质 - Google Patents
远程打印的实现方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115454362A CN115454362A CN202211064984.0A CN202211064984A CN115454362A CN 115454362 A CN115454362 A CN 115454362A CN 202211064984 A CN202211064984 A CN 202211064984A CN 115454362 A CN115454362 A CN 115454362A
- Authority
- CN
- China
- Prior art keywords
- printing
- web socket
- token
- queue
- instruction
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1223—Dedicated interfaces to print systems specifically adapted to use a particular technique
- G06F3/1236—Connection management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1202—Dedicated interfaces to print systems specifically adapted to achieve a particular effect
- G06F3/1203—Improving or facilitating administration, e.g. print management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1223—Dedicated interfaces to print systems specifically adapted to use a particular technique
- G06F3/1237—Print job management
- G06F3/126—Job scheduling, e.g. queuing, determine appropriate device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1278—Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
- G06F3/1285—Remote printer device, e.g. being remote from client or server
-
- 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]
- H04L67/025—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
Abstract
本发明涉及打印领域,公开了一种远程打印的实现方法、装置、设备及存储介质。该方法包括:在打印终端与web socket云服务之间建立长连接,接收用户端发起的打印请求,并基于预设Kafka队列构建打单队列,基于所述打单队列依次对订单数据处理得到打印指令,并构建打印指令队列,确认所述打印指令与token的对应关系正确后,下发打印指令,并调用打印插件进行打印。本发明提供的技术方案通过在打印终端与服务器和用户终端与服务器之间建立连接,基于打印申请构建Kafka队列,依次处理打印指令完成打印,实现了通过用户端的移动应用对打印机的进行远程打印,提高了打印效率。
Description
技术领域
本发明涉及打印领域,具体涉及一种远程打印的实现方法、装置、设备及存储介质。
背景技术
现如今,打印机在人们的日常生活、工作中得到广泛应用,打印是人们进行文字、数据以及图表等信息记录的一个重要媒介,用户在移动化场景中使用app或小程序可以方便地连接便携蓝牙打印机进行打单,但对于单量较多的时候,用户更倾向于用桌面打印机进行打印。相比便携打印机出纸慢、频繁换纸,桌面打印机出纸块,换纸次数少。但由于手机无法直接控制桌面打印机,通常这类需求需要被拆分为手机上录入数据,pc端控制打印机来进行打印,这种操作模式非常不便捷,故需要形成远程打印机能力进行打印。很多打印机厂商提供的是云打印机方案,这类打印机具备网路通信能力,可以直接接受服务器的指令。移动应用可以在需要远程打印机的时候将指令提交给应用的后端,后端调用打印机厂商的API完成指令下发,由此完成移动端操作,桌面打印机出纸的应用场景。这种方式技术方案简单,但需要用户新购云打印机,且云打印机的价格过高,这都提高了用户的使用门槛。因此,用户希望通过借助pc电脑完成对桌面打印机的控制,实现了远程打印。
发明内容
本发明的主要目的在于解决现有的打印方式无法实现用户端对打印机的远程打印的技术问题。
本发明第一方面提供了一种远程打印的实现方法,所述远程打印的实现方法包括:在比较接收到的打印终端的标识与web socket云服务预先存储的标识一致时,在所述打印终端与所述web socket云服务之间建立长连接;接收用户端发起的打印请求,并基于预设Kafka队列构建打单队列,其中,所述打单队列至少包括订单数据、websocket token;基于所述打单队列依次对订单数据处理得到打印指令,构建打印指令队列;判断所述打印指令队列的各打印指令中的token与所述web socket token的对应关系是否正确;若正确,则下发打印指令,并调用打印插件进行打印。
可选的,在本发明第一方面的第一种实现方式中,所述在比较接收到的打印终端的标识与web socket云服务预先存储的标识一致时,在所述打印终端与所述web socket云服务之间建立长连接,包括:接收打印终端发送标识信息和建立长连接的请求,其中,所述标识信息为打印终端发送的通过对称加密算法加密后的自身唯一的标识;通过解密密钥对标识信息解密得到所述打印终端的标识;查询所述websocket云服务预先存储的标识,判断是否包含所述打印终端的标识;若包含,则在所述打印终端与所述websocket云服务建立长连接。
可选的,在本发明第一方面的第二种实现方式中,所述在比较接收到的打印终端的标识与web socket云服务预先存储的标识一致时,在所述打印终端与所述web socket云服务之间建立长连接,还包括:在用户端植入封装好的SDK完成登录后,接收用户端发送的申请web socket token信息;为用户端生成web socket token并记录token,以及所述token与所述用户端的对应关系;接收用户端发起的web socket连接和web socket token值;比较所述用户端发送的token值与预先记录的token值是否一致;若一致,则所述用户端与web socket云服务建立web socket连接。
可选的,在本发明第一方面的第三种实现方式中,所述接收用户端发起的打印请求,并基于预设Kafka队列构建打单队列,其中,所述打单队列至少包括订单数据、websocket token,包括:根据用户端发起的打印请求生成订单数据,并获取与所述打印申请对应的web socket token,其中,所述订单数据可以包括发起该打印请求的用户端的账号、发起时间、打印时间、打印终端的标识、打印内容等;将所述订单数据按照订单时间先后依次输入至预设Kafka队列的对应位置;整合所有订单数据和web socket token,得到打单队列。
可选的,在本发明第一方面的第四种实现方式中,所述基于所述打单队列依次对订单数据处理得到打印指令,构建打印指令队列,包括:将所述订单数据处理成打印指令,所述打印指令包括预设的打印终端可读的打印命令、打印内容;利用中间件Kafka将所述打印指令分发至不同的集群,并在所述集群中将所述打印指令推送至不同的分类节点,得到分类节点信息;将各分类节点的分类节点信息按照按照先后顺序进行排列,得到打印指令队列。
可选的,在本发明第一方面的第五种实现方式中,所述判断所述打印指令队列的各打印指令中的token与所述web socket token的对应关系是否正确,包括:将打印指令中的token值与发起所述打印申请的客户端ID与所述token值在web socket云服务中预先记录的客户端ID比较,判断是否一致;若一致,则说明所述打印指令与token值的对应关系正确;若不一致,则说明所述打印指令与token值的对应关系失败,则利用回调函数向所述用户端发送失败回调。
可选的,在本发明第一方面的第六种实现方式中,所述若正确,则下发打印指令,并调用打印插件进行打印,包括:在确认对应关系正确后,根据web socket token匹配对应的用户端;将所述打印指令通过web socket发送至所述用户端;解析所述打印指令获取计算机可读的打印命令,根据所述打印命令调用lodop打印插件;将所述打印内容发送至打印终端进行打印。
本发明第二方面提供了一种远程打印的实现装置,所述远程打印的实现装置包括:建立模块,用于在比较接收到的打印终端的标识与web socket云服务预先存储的标识一致时,在所述打印终端与所述web socket云服务之间建立长连接;第一构建模块,用于接收用户端发起的打印请求,并基于预设Kafka队列构建打单队列,其中,所述打单队列至少包括订单数据、web socket token;第二构建模块,用于基于所述打单队列依次对订单数据处理得到打印指令,构建打印指令队列;判断模块,用于判断所述打印指令队列的各打印指令中的token与所述web socket token的对应关系是否正确;打印模块,用于若正确,则下发打印指令,并调用打印插件进行打印。
可选地,在本发明第二方面的第一种实现方式中,所述建立模块包括:第一接收单元,用于接收打印终端发送标识信息和建立长连接的请求,其中,所述标识信息为打印终端发送的通过对称加密算法加密后的自身唯一的标识;解密单元,用于通过解密密钥对标识信息解密得到所述打印终端的标识;查询单元,用于查询所述web socket云服务预先存储的标识,判断是否包含所述打印终端的标识;第一连接单元,用于在判断包含所述打印终端的标识后,在所述打印终端与所述web socket云服务建立长连接。
可选地,在本发明第二方面的第二种实现方式中,所述建立模块还包括:第二接收单元,用于在用户端植入封装好的SDK完成登录后,接收用户端发送的申请web sockettoken信息;记录单元,用于为用户端生成web socket token并记录token,以及所述token与所述用户端的对应关系;第三接收单元,用于接收用户端发起的web socket连接和websocket token值;对比单元,用于对比所述用户端发送的token值与预先记录的token值是否一致;第二连接单元,用于在比较所述token值一致后,在所述用户端与web socket云服务建立web socket连接。
可选地,在本发明第二方面的第三种实现方式中,所述第一构建模块包括:生成单元,用于根据用户端发起的打印请求生成订单数据,并获取与所述打印申请对应的websocket token,其中,所述订单数据可以包括发起该打印请求的用户端的账号、发起时间、打印时间、打印终端的标识、打印内容等;写入单元,用于将所述订单数据按照订单时间先后依次写入至预设Kafka队列的对应位置;整合单元,用于整合所有订单数据和web sockettoken,得到打单队列。
可选地,在本发明第二方面的第四种实现方式中,所述第二构建模块包括:处理单元,用于将所述订单数据处理成打印指令,所述打印指令包括预设的打印终端可读的打印命令、打印内容;分发推送单元,用于利用中间件Kafka将所述打印指令分发至不同的集群,并在所述集群中将所述打印指令推送至不同的分类节点,得到分类节点信息;排列单元,用于将各分类节点的分类节点信息按照按照先后顺序进行排列,得到打印指令队列。
可选地,在本发明第二方面的第五种实现方式中,所述判断模块包括:比较单元,用于将打印指令中的token值与发起所述打印申请的客户端ID与所述token值在websocket云服务中预先记录的客户端ID比较,判断是否一致;确认单元,用于在比较所述token值一致后,确认所述打印指令与token值的对应关系正确;回调单元,用于在比较所述token值不一致后,利用回调函数向所述用户端发送失败回调。
可选地,在本发明第二方面的第六种实现方式中,所述打印模块包括:匹配单元,用于在确认对应关系正确后,根据web socket token匹配对应的用户端,将所述打印指令通过web socket发送至所述用户端;解析调用单元,用于解析所述打印指令获取计算机可读的打印命令,根据所述打印命令调用lodop打印插件;发送单元,用于将所述打印内容发送至打印终端进行打印。
本发明的第三方面提供了一种远程打印设备,所述远程打印设备包括存储器和至少一个处理器,所述存储器中存储有指令;所述至少一个处理器调用所述存储器中的所述指令,以使得所述远程打印设备执行如上任一项所述的远程打印的实现方法的各个步骤。
本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,所述指令被处理器执行时实现如上任一项所述远程打印的实现方法的各个步骤。
本发明提供的技术方案中,通过在比较接收到的打印终端的标识与web socket云服务预先存储的标识一致时,在所述打印终端与所述web socket云服务之间建立长连接,接收用户端发起的打印请求,并基于预设Kafka队列构建打单队列,基于所述打单队列依次对订单数据处理得到打印指令,构建打印指令队列,判断所述打印指令队列的各打印指令中的token与所述web socket token的对应关系是否正确,确认正确后,下发打印指令,并调用打印插件进行打印。本申请通过在打印终端和服务器之间建立连接,通过用户端的第三方应用,基于web socket连接,实现移动应用调用打印机借助pc电脑完成对打印机的控制,实现了远程打印功能,降低了打印成本,提高了打印效率和便捷性。
附图说明
图1为本发明实施例提供的远程打印的实现方法的第一个实施例示意图;
图2为本发明实施例提供的远程打印的实现方法的第二个实施例示意图;
图3为本发明实施例提供的远程打印的实现方法的第三个实施例示意图;
图4为本发明实施例提供的远程打印的实现装置的一种结构示意图;
图5为本发明实施例提供的远程打印的实现装置的另一种结构示意图;
图6为本发明实施例提供的远程打印设备的结构示意图。
具体实施方式
针对于现有的打印方式,本申请通过比较接收到的打印终端的标识与web socket云服务预先存储的标识是否一致,在确认一致后在所述打印终端与所述web socket云服务之间建立长连接,接收用户端发起的打印请求,并基于预设Kafka队列构建打单队列,基于所述打单队列依次对订单数据处理得到打印指令,构建打印指令队列,判断所述打印指令队列的各打印指令中的token与所述web socket token的对应关系是否正确,确认正确后,下发打印指令,并调用打印插件进行打印。本申请提供的技术方案通过在打印终端与服务器和用户终端与服务器之间建立连接,基于打印申请构建Kafka队列从而依次处理打印指令完成打印,借用用户端的移动应用实现了对桌面打印机的远程打印功能,提高了打印效率。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、设备、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1本发明实施例提供的远程打印的实现方法的第一个实施例示意图,该方法具体包括以下步骤:
101、在比较接收到的打印终端的标识与web socket云服务预先存储的标识一致时,在所述打印终端与所述web socket云服务之间建立长连接。
为了避免打印终端的恶意连接,造成web socket云服务的资源浪费,在进行连接前,首先获取请求连接的打印终端的标识,校验web socket云服务预先存储的标识中是否包含请求连接的打印终端的唯一标识,如果包含,则可以与其建立通信连接。
Web socket是一种网络通信协议,提供了一种在单个TCP连接上进行全双工通讯的协议,通过触发web socket连接的建立请求,前端web socket连接的建立请求被发送至web socket云服务,使得web socket云服务与打印终端通过web socket保持实时通信。所述长连接在建立之后,不管是否使用都保持连接,连接的双方只需要做一个握手动作,在建立连接之后,就可以在任意时刻相互推送消息。
每台打印机具有特定且唯一的标识,web socket云服务预先存储的标识可以由用户在移动终端输入,并保存在web socket云服务中,也可以是通过其他方式获取,例如在打印机和电脑端通过USB连接,将所述标识发送至web socket云服务进行保存。
102、接收用户端发起的打印请求,并基于预设Kafka队列构建打单队列,其中,打单队列至少包括订单数据、web socket token。
根据用户端发起的打印请求,生成需要打单的完整的订单数据,所述订单数据可以包括发起该打印请求的用户端的账号、发起时间、打印时间、打印终端的标识、打印内容等,其中打印时间可以是即时打印或在预设时间打印,根据打印终端的标识可以确定用户端的选择,即选择哪一打印终端作为目标打印机执行打印任务。
所述预设Kafka队列是一个消息框架,将不同数据进行分类,其中,数据种类包括app code、订单数据、web socket token和回调地址,将接受到的所有数据按照不同的种类写入预设Kafka队列,就能得到打单队列。
103、基于打单队列依次对订单数据处理得到打印指令,构建打印指令队列。
所述打单队列中的一个数据单元按照预定的时间对打单队列进行周期性检查,数据单元一旦存入打单队列,根据指定的打印时间被发往适当的目的地,所述指定的打印时间是用户端预先设定的,对打单队列的实体控制使在设定的打印时间订单数据可以被处理。在打印队列中给每个数据单元指定一个打印时间,当为存储的特定数据单元指定的打印时间出现时,该数据单元会发送到下一步骤,直至打印。
根据队列的属性特征,依次对打单队列处理,具体包括将打印数据处理成打印指令,即将订单数据中的打印内容,其中,所述订单数据可以包括发起该打印请求的用户端的账号、发起时间、打印时间、打印终端的标识、打印内容等,所述打印指令包括预设的打印终端可读的打印命令、打印内容,然后基于打印指令,构建打印指令队列。
在实际应用中,所述打印指令在Kafka处理平台被分发至不同的集群,并在所述集群中的分类节点处进行分类,得到所述分类节点信息,所述分类节点信息以类别的形式进行存储,并按照先后顺序进行排列,得到打印指令队列。
104、判断所述打印指令队列的各打印指令中的token与所述web socket token的对应关系是否正确。
一般情况下,当客户端频繁向web socket云服务请求、发送数据时,web socket云服务在每次发送或接收数据前,都会频繁的去数据库中查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,这加重了web socket云服务的压力。
在本申请中,客户端使用用户名和密码请求登录,web socket云服务收到请求,验证用户名与密码,验证成功后,web socket云服务会签发一个token,再把这个token发送给客户端,客户端收到token以后可以把它存储起来,比如放在cookie里或者local storage里,以后客户端每次向服务端请求资源的时候只需带着web socket云服务签发的token,无需再次带上用户名和密码,web socket云服务收到请求,验证客户端请求里面带着的token,如果验证成功,就会接收请求并返回相应的数据。其中,所述token值是web socket云服务生成的一串字符串,长度可以为16~32位,以作客户端进行请求的一个令牌。
提取打印指令中的web socket token值,与web socket云服务中预先存储的token值比较,判断是否一致,若所述token值不一致,则对应关系错误,说明该打印指令对应的打印申请是由未知客户端发起的,此时拒绝接收该打印申请,利用回调函数将所述打印申请退回至客户端,并发送提示信息。
105、若正确,则下发打印指令,并调用打印插件进行打印。
若所述token值一致,则对应关系正确,说明该打印指令对应的打印申请是由已经与web socket云服务建立通信连接的客户端发起的,属于合法的打印申请,可以被websocket云服务接收。
将所述打印指令发送至与token值对应的前端,提取打印指令中的计算机可读的打印命令,并通过该打印命令调用打印插件,所述打印插件可以是lodop,将打印内容发送到打印终端进行打印。
本方案通过在打印终端与服务器之间建立连接,基于打印申请构建Kafka队列,得到打印指令队列,依次处理打印指令,调用打印插件完成打印,本实施例借用用户端的移动应用实现了对桌面打印机的远程打印。
请参阅图2,本发明实施例提供的远程打印的实现方法的第二个实施例示意图,该方法包括:
201、接收打印终端发送的标识信息和建立长连接的请求,通过解密密钥对标识信息解密得到打印终端的标识。
打印终端对标识信息进行加密具体是根据随机数据调取预设的加密方案,在打印终端中存储有多种加密方案,其中,根据随机数据调取加密方案的步骤具体为:设置一组函数,以随机数据作为变量源,根据函数来确定选用何种加密方案。由于随机数据是随机采集的,因此其数据无法预测,因此最终采用何种加密方案也是无法进行预测的,在加密完成后,将加密后的标识信息发送至web socket云服务。
web socket云服务对标识信息解密,具体步骤为:web socket云服务将标准数据代入预设的加密方案确定函数中,根据结果调取相应的加密方案,即将标准数据作为自变量代入其中,根据加密方案确定函数进行计算,得到计算结果,根据该计算结果进行加密方案的选择,在确定加密方案后,可以根据加密后的标识信息得到打印终端的标识。
202、查询web socket云服务预先存储的标识,判断是否包含该打印终端的标识,若包含,则在打印终端与web socket云服务建立长连接。
遍历web socket云服务中所有的预先存储的的标识库,将上述获得的标识与websocket云服务中的标识进行匹配,判断是否一致,若一致,则所述标识包含在web socket云服务的标识库中,说明请求建立连接的打印终端在web socket云服务的接受列表内,可以与其建立长连接。
203、根据用户端发起的打印请求生成订单数据,并获取与打印申请对应的websocket token。
在实际应用中,所述用户端发起的打印申请一般包括打印内容和token值,对websocket token的获取还可以调用web socket云服务中预先存储的该用户端的token值,同时,web socket云服务获取与打印申请有关的其他数据,包括发起该打印请求的用户端的账号、发起时间、打印时间、打印终端的标识、打印内容等,从而形成完整的订单数据。
204、将订单数据按照时间先后依次写入至预设Kafka队列的对应位置,整合所有订单数据和web socket token,得到打单队列。
将订单数据按照打印申请的发起时间写入预设Kafka队列,所述预设Kafka队列至少包括app code、订单数据、web socket token、回调地址,所述app code是在用户端通过第三方应用申请token值时,web socket云服务为其开设的,同时还登记了回调地址。调取web socket云服务中预先存储的app code和回调地址,将所有数据填写至队列中,得到打单队列。
在实际应用中,当打印申请数量比较多时,为了避免打单队列崩溃,可以将打印时间为在指定时间打印的申请储存至任务表中,当打单队列里的订单数据的数量在队列的处理范围内时,从所述任务表中获取打印申请并开始处理。
205、依次将订单数据处理成打印指令,利用中间件Kafka将打印指令分发至不同的集群,并在集群中将打印指令推送至不同的分类节点,得到分类节点信息。
订单数据可以包括发起该打印请求的用户端的账号、发起时间、打印时间、打印终端的标识、打印内容等,打印指令包括预设的打印终端可读的打印命令、打印内容,提取订单数据中的打印内容,基于web socket云服务中预先存储的打印终端可读的打印命令,得到打印指令。
Kafka是一个高吞吐的分布式消息队列系统,主要由Kafka架构是由producer(消息生产者)、consumer(消息消费者)、broker(Kafka集群的server,负责处理消息读、写请求,存储消息,在Kafka cluster这一层这里,其实里面是有很多个broker)、topic(消息队列/分类相当于队列,里面有生产者和消费者模型)、zookeeper(元数据信息存在zookeeper中,包括:存储消费偏移量,topic话题信息,partition信息)这些部分组成。
在开始创建Kafka队列前,要先编辑Kafka的配置,然后进行节点分发,在启动zookeeper后启动Kafka集群,Kafka集群使用可配置的保留期限来保留所有已发布的记录,每条发布到Kafka集群的消息都有一个类别,即topic。
在实际应用中,可以根据打印申请选择的打印终端将打印指令分发至不同的集群。
206、将各分类节点的分类节点信息按照按照先后顺序进行排列,得到打印指令队列。
Kafka里面的信息是由topic来组织的,一个队列就是一个topic,为了做并行把每个topic又分为很多个partition,在每个partition内部的消息强有序,相当于有序的队列,其中每个消息都有个序号offset,从前面读往后面写。
207、判断打印指令队列的各打印指令中的token与web socket token的对应关系是否正确。
将打印指令中的token值与发起所述打印申请的客户端ID与所述token值在websocket云服务中预先记录的客户端ID比较,判断是否一致,若一致,则确认所述打印指令与token值的对应关系正确,若不一致,则说明所述打印指令与token值的对应关系失败,则利用回调函数向所述用户端发送失败回调。
208、若正确,则下发打印指令,并调用打印插件进行打印。
在确认对应关系正确后,根据web socket token匹配对应的用户端,将所述打印指令通过web socket发送至所述用户端,解析所述打印指令获取计算机可读的打印命令,根据所述打印命令调用lodop打印插件,将所述打印内容发送至打印终端进行打印。
本方案通过比较打印终端的标识是否一致,来确定与web socket云服务的连接是否允许建立,基于打印申请构建Kafka队列,引入任务表解决了当打印申请过多时可能造成web socket云服务崩溃的问题,根据打印指令队列依次处理打印指令完成打印,实现了借用用户端的移动应用实现了对桌面打印机的远程打印功能。
请参阅图3,本发明实施例提供的远程打印的实现方法的第三个实施例示意图,该方法包括:
301、在打印终端与web socket云服务之间建立长连接。
接收打印终端发送标识信息和建立长连接的请求,其中,所述标识信息为打印终端发送的通过对称加密算法加密后的自身唯一的标识,通过解密密钥对标识信息解密得到所述打印终端的标识,查询所述web socket云服务预先存储的标识,判断是否包含所述打印终端的标识,若包含,则在所述打印终端与所述web socket云服务建立长连接。
302、接收用户端发送的申请web socket token信息,为用户端生成web sockettoken并记录token,以及所述token与所述用户端的对应关系。
用户端通过第三方应用,在使用账号密码完成用户端的第三方应用自身的逻辑登录后,在应用内植入封装好的SDK,为通信连接提供接口,向web socket云服务申请websocket token,所述web socket云服务为所述第三方应用开设app code,登记回调地址和系统名,所述回调地址是指授权完成后回调的地址链接,用户通过平台来访问应用的时,平台会把相关的上下文参数和state通过这个回调地址传给用户端。在用户端申请websocket token后,基于app code为该账号生成token值,所述token值是web socket云服务生成的一串字符串,长度可以为16~32位,以作为客户端进行请求的一个令牌,即为websocket token,同时,应用后端利用redis记录token与account ID的对应关系。
303、接收用户端发起的web socket连接和web socket token值,对比用户端发送的token值与预先记录的token值是否一致。
用户端在完成登录和获取到token值后,向web socket云服务发起建立长连接请求,web socket云服务将接受到的token值与预先记录的该用户端的token值比较,判断token值是否合法。
304、若一致,则在用户端与web socket云服务之间建立web socket连接。
305、接收用户端发起的打印请求,并基于预设Kafka队列构建打单队列,基于打单队列依次对订单数据处理得到打印指令,构建打印指令队列。
根据用户端发起的打印请求生成订单数据,并获取与所述打印申请对应的websocket token,其中,所述订单数据可以包括发起该打印请求的,将所述订单数据按照订单时间先后依次写入至预设Kafka队列的对应位置,整合所有订单数据和web socket token,得到打单队列。
将所述订单数据处理成打印指令,所述打印指令包括预设的打印终端可读的打印命令、打印内容,利用中间件Kafka将所述打印指令分发至不同的集群,并在所述集群中将所述打印指令推送至不同的分类节点,得到分类节点信息,将各分类节点的分类节点信息按照按照先后顺序进行排列,得到打印指令队列。
306、将打印指令中的token值和发起打印申请的客户端ID与该token值在websocket云服务中预先记录的客户端ID比较,判断是否一致。
在实际应用中,为了能让用户端通过移动应用调用桌面打印机进行远程打印,要先确认所述用户端上登录的账号是被web socket云服务接受的,即在处理打印指令时,要先判断该打印指令对应的打印申请发起的用户端是否有资格发起,通过判断token值与客户端ID的对应关系来判断打印指令是否能被解析打印。
307、若不一致,则说明打印指令与token值的对应关系失败,则利用回调函数向用户端发送失败回调。
回调函数是一个通过函数指针调用的函数,即把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,此为回调函数,回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。
若发送该token值的用户端的客户端ID与根据所述token值查询到的web socket云服务中由redis记录的客户端ID不一致,则说明对应关系错误,此时,可能出现了token值泄露或用户端发送了错误的token值,web socket云服务拒绝处理该打印指令,并根据websocket云服务预先登记的回调地址,将接受失败信息发送至所述地址。
308、若一致,根据web socket token匹配对应的用户端,将打印指令通过websocket发送至用户端。
若一致,则确认所述打印指令与token值的对应关系正确,可以根据该token值匹配到正确的客户端ID,从而将打印指令发送给用户端。
309、解析打印指令获取计算机可读的打印命令,根据打印命令调用lodop打印插件,将打印内容发送至打印终端进行打印。
综上,本实施例通过在用户端和web socket云服务之间建立长连接,处理用户端发起的打印请求,构建基于Kafka的打印指令队列,依次处理打印指令,判断token值和客户端ID的对应关系,根据token值找到对应的前端并下发打印指令,调用打印插件将打印内容发送至打印终端进行打印,提高了对打印请求处理的效率。
上面对本发明实施例中远程打印的实现方法进行了描述,下面从模块化功能实体的角度对本发明实施例远程打印的实现装置进行详细描述,请参阅图4,本发明实施例提供的远程打印的实现装置的一种结构示意图,包括:
建立模块401,用于在比较接收到的打印终端的标识与web socket云服务预先存储的标识一致时,在所述打印终端与所述web socket云服务之间建立长连接;
第一构建模块402,用于接收用户端发起的打印请求,并基于预设Kafka队列构建打单队列,其中,所述打单队列至少包括订单数据、web socket token;
第二构建模块403,用于基于所述打单队列依次对订单数据处理得到打印指令,构建打印指令队列;
判断模块404,用于判断所述打印指令队列的各打印指令中的token与所述websocket token的对应关系是否正确;
打印模块405,用于若正确,则下发打印指令,并调用打印插件进行打印。
通过上述方案的实施,在打印终端与服务器和用户终端与服务器之间建立连接,基于打印申请构建Kafka队列从而依次处理打印指令完成打印,借用用户端的移动应用实现了对桌面打印机的远程打印功能。
请参阅图5,本发明实施例中远程打印的实现装置的第二个实施例包括
建立模块401,用于在比较接收到的打印终端的标识与web socket云服务预先存储的标识一致时,在所述打印终端与所述web socket云服务之间建立长连接;
第一构建模块402,用于接收用户端发起的打印请求,并基于预设Kafka队列构建打单队列,其中,所述打单队列至少包括订单数据、web socket token;
第二构建模块403,用于基于所述打单队列依次对订单数据处理得到打印指令,构建打印指令队列;
判断模块404,用于判断所述打印指令队列的各打印指令中的token与所述websocket token的对应关系是否正确;
打印模块405,用于若正确,则下发打印指令,并调用打印插件进行打印。
在本实施例中,所述建立模块401包括:
接收单元4011,用于接收打印终端发送标识信息和建立长连接的请求,其中,所述标识信息为打印终端发送的通过对称加密算法加密后的自身唯一的标识;
解密单元4012,用于通过解密密钥对标识信息解密得到所述打印终端的标识;
查询单元4013,用于查询所述web socket云服务预先存储的标识,判断是否包含所述打印终端的标识;
连接单元4014,用于在判断包含所述打印终端的标识后,在所述打印终端与所述web socket云服务建立长连接。
在本实施例中,所述建立模块401还用于:
在用户端植入封装好的SDK完成登录后,接收用户端发送的申请web sockettoken信息;为用户端生成web socket token并记录token,以及所述token与所述用户端的对应关系;接收用户端发起的web socket连接和web socket token值;对比所述用户端发送的token值与预先记录的token值是否一致;在比较所述token值一致后,在所述用户端与web socket云服务建立web socket连接。
在本实施例中,所述第一构建模块402包括:
生成单元4021,用于根据用户端发起的打印请求生成订单数据,并获取与所述打印申请对应的web socket token,其中,所述订单数据可以包括发起该打印请求的用户端的账号、发起时间、打印时间、打印终端的标识、打印内容等;
写入单元4022,用于将订单数据按照订单时间先后依次写入至预设Kafka队列的对应位置;
整合单元4023,用于整合所有订单数据和web socket token,得到打单队列。
在本实施例中,所述第二构建模块403包括:
处理单元4031,用于将所述订单数据处理成打印指令,所述打印指令包括预设的打印终端可读的打印命令、打印内容;
分发推送单元4032,用于利用中间件Kafka将所述打印指令分发至不同的集群,并在所述集群中将所述打印指令推送至不同的分类节点,得到分类节点信息;
排列单元4033,用于将各分类节点的分类节点信息按照按照先后顺序进行排列,得到打印指令队列。
在本实施例中,所述判断模块404包括:
比较单元4041,用于将打印指令中的token值与发起所述打印申请的客户端ID与所述token值在web socket云服务中预先记录的客户端ID比较,判断是否一致;
确认单元4042,用于在比较所述token值一致后,确认所述打印指令与token值的对应关系正确;
回调单元4043,用于在比较所述token值不一致后,利用回调函数向所述用户端发送失败回调。
在本实施例中,所述打印模块405包括:
匹配单元4051,用于在确认对应关系正确后,根据web socket token匹配对应的用户端,将所述打印指令通过web socket发送至所述用户端;
解析调用单元4052,用于解析所述打印指令获取计算机可读的打印命令,根据所述打印命令调用lodop打印插件;
发送单元4053,用于将所述打印内容发送至打印终端进行打印。
综上,本方案通过在所述打印终端与所述web socket云服务之间建立长连接,接收用户端发起的打印请求,并基于预设Kafka队列构建打单队列,基于所述打单队列依次对订单数据处理得到打印指令,构建打印指令队列,确认所述打印指令与token的对应关系正确后,下发打印指令,并调用打印插件进行打印,实现了借用用户端的移动应用实现了对桌面打印机的远程打印。
上面图4-5从模块化功能实体的角度对本发明实施例中的中远程打印的实现装置进行详细描述,下面从硬件处理的角度对本发明实施例中远程打印设备进行详细描述。
图6是本发明实施例提供的一种远程打印设备的结构示意图,该远程打印设备600可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessing units,CPU)610(例如,一个或一个以上处理器)和存储器620,一个或一个以上存储应用程序633或数据632的存储介质630(例如一个或一个以上海量存储设备)。其中,存储器620和存储介质630可以是短暂存储或持久存储。存储在存储介质630的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对远程打印设备600中的一系列指令操作。更进一步地,处理器610可以设置为与存储介质630通信,在远程打印设备600上执行存储介质630中的一系列指令操作,以实现上述实施提供的方法。
远程打印设备600还可以包括一个或一个以上电源640,一个或一个以上有线或无线网络接口650,一个或一个以上输入输出接口660,和/或,一个或一个以上操作设备631,例如Windows Serve,Mac OS X,Unix,Linux,FreeBSD等等。本领域技术人员可以理解,图6所示的远程打印设备结构并不构成对本发明提供的计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行上述各实施例提供的所述的远程打印的实现方法的各个步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备或装置、单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种远程打印的实现方法,其特征在于,所述远程打印的实现方法包括:
在比较接收到的打印终端的标识与web socket云服务预先存储的标识一致时,在所述打印终端与所述web socket云服务之间建立长连接;
接收用户端发起的打印请求,并基于预设Kafka队列构建打单队列,其中,所述打单队列至少包括订单数据、web socket token;
基于所述打单队列依次对订单数据处理得到打印指令,构建打印指令队列;
判断所述打印指令队列的各打印指令中的token与所述web socket token的对应关系是否正确;
若正确,则下发打印指令,并调用打印插件进行打印。
2.如权利要求1所述的远程打印的实现方法,其特征在于,所述在比较接收到的打印终端的标识与web socket云服务预先存储的标识一致时,在所述打印终端与所述web socket云服务之间建立长连接,包括:
接收打印终端发送标识信息和建立长连接的请求,其中,所述标识信息为打印终端发送的通过对称加密算法加密后的自身唯一的标识;
通过解密密钥对标识信息解密得到所述打印终端的标识;
查询所述websocket云服务预先存储的标识,判断是否包含所述打印终端的标识;
若包含,则在所述打印终端与所述websocket云服务建立长连接。
3.如权利要求2所述的远程打印的实现方法,其特征在于,所述在比较接收到的打印终端的标识与web socket云服务预先存储的标识一致时,在所述打印终端与所述web socket云服务之间建立长连接,还包括:
在用户端植入封装好的SDK完成登录后,接收用户端发送的申请web socket token信息;
为用户端生成web socket token并记录token,以及所述token与所述用户端的对应关系;
接收用户端发起的web socket连接和web socket token值;
对比所述用户端发送的token值与预先记录的token值是否一致;
若一致,则所述用户端与websocket云服务建立web socket连接。
4.如权利要求1所述的远程打印的实现方法,其特征在于,所述接收用户端发起的打印请求,并基于预设Kafka队列构建打单队列,包括:
根据用户端发起的打印请求生成订单数据,并获取与所述打印申请对应的web sockettoken,其中,所述订单数据可以包括发起该打印请求的用户端的账号、发起时间、打印时间、打印终端的标识、打印内容等;
将所述订单数据按照订单时间先后依次写入至预设Kafka队列的对应位置;
整合所有订单数据和web socket token,得到打单队列。
5.如权利要求1所述的远程打印的实现方法,其特征在于,所述基于所述打单队列依次对订单数据处理得到打印指令,构建打印指令队列,包括:
将所述订单数据处理成打印指令,所述打印指令包括预设的打印终端可读的打印命令、打印内容;
利用中间件Kafka将所述打印指令分发至不同的集群,并在所述集群中将所述打印指令推送至不同的分类节点,得到分类节点信息;
将各分类节点的分类节点信息按照按照先后顺序进行排列,得到打印指令队列。
6.如权利要求1所述的远程打印的实现方法,其特征在于,所述判断所述打印指令队列的各打印指令中的token与所述web socket token的对应关系是否正确,包括:
将打印指令中的token值与发起所述打印申请的客户端ID与所述token值在websocket云服务中预先记录的客户端ID比较,判断是否一致;
若一致,则确认所述打印指令与token值的对应关系正确;
若不一致,则说明所述打印指令与token值的对应关系失败,则利用回调函数向所述用户端发送失败回调。
7.如权利要求1所述的远程打印的实现方法,其特征在于,所述若正确,则下发打印指令,并调用打印插件进行打印,包括:
在确认对应关系正确后,根据web socket token匹配对应的用户端;
将所述打印指令通过web socket发送至所述用户端;
解析所述打印指令获取计算机可读的打印命令,根据所述打印命令调用lodop打印插件;
将所述打印内容发送至打印终端进行打印。
8.一种远程打印的实现装置,其特征在于,所述远程打印的实现装置包括:
建立模块,用于在比较接收到的打印终端的标识与web socket云服务预先存储的标识一致时,在所述打印终端与所述web socket云服务之间建立长连接;
第一构建模块,用于接收用户端发起的打印请求,并基于预设Kafka队列构建打单队列,其中,所述打单队列至少包括订单数据、web socket token;
第二构建模块,用于基于所述打单队列依次对订单数据处理得到打印指令,构建打印指令队列;
判断模块,用于判断所述打印指令队列的各打印指令中的token与所述web sockettoken的对应关系是否正确;
打印模块,用于在判断所述对应关系正确后,下发打印指令,并调用打印插件进行打印。
9.一种远程打印设备,其特征在于,所述远程打印设备包括存储器和至少一个处理器,所述存储器中存储有指令;所述至少一个处理器调用所述存储器中的所述指令,以使得所述远程打印设备执行如权利要求1-7中任一项所述的远程打印的实现方法的各个步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,其特征在于,所述指令被处理器执行时实现如权利要求1-7中任一项所述远程打印的实现方法的各个步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211064984.0A CN115454362A (zh) | 2022-09-01 | 2022-09-01 | 远程打印的实现方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211064984.0A CN115454362A (zh) | 2022-09-01 | 2022-09-01 | 远程打印的实现方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115454362A true CN115454362A (zh) | 2022-12-09 |
Family
ID=84301828
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211064984.0A Pending CN115454362A (zh) | 2022-09-01 | 2022-09-01 | 远程打印的实现方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115454362A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115951848A (zh) * | 2022-12-24 | 2023-04-11 | 广州天下大同网络科技有限公司 | 远程打印方法、系统、计算机设备及介质 |
-
2022
- 2022-09-01 CN CN202211064984.0A patent/CN115454362A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115951848A (zh) * | 2022-12-24 | 2023-04-11 | 广州天下大同网络科技有限公司 | 远程打印方法、系统、计算机设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111478967B (zh) | 一种请求处理方法及装置 | |
CN109710533A (zh) | 一种接口测试方法、装置及服务器 | |
CN103384237A (zh) | 一种共享IaaS业务云账号的方法、及共享平台和网络装置 | |
CN109347839B (zh) | 集中式密码管理方法、装置、电子设备及计算机存储介质 | |
CN110263579B (zh) | 一种数据处理方法、系统及相关设备 | |
CN110995656A (zh) | 负载均衡方法、装置、设备及存储介质 | |
CN108289074B (zh) | 用户账号登录方法及装置 | |
CN111061685A (zh) | 日志查询方法、装置、节点设备及存储介质 | |
CN111460394A (zh) | 一种版权文件的验证方法、装置及计算机可读存储介质 | |
CN110855688B (zh) | 一种区块链信息处理方法及相关设备 | |
CN115454362A (zh) | 远程打印的实现方法、装置、设备及存储介质 | |
CN112507320A (zh) | 访问控制方法、装置、系统、电子设备和存储介质 | |
CN112434094B (zh) | 基于加密算法的数据库连接方法、装置及计算机设备 | |
CN112214270A (zh) | 一种页面重绘方法、装置、设备及存储介质 | |
CN111885190A (zh) | 服务请求处理方法及系统 | |
CN108667647B (zh) | 一种设备参数的设置方法、设备及服务器 | |
CN105519069B (zh) | 数据处理系统、中心装置以及程序 | |
CN107707611B (zh) | 电力数据云处理方法、装置及系统 | |
CN111988262A (zh) | 认证方法、装置及服务器、存储介质 | |
CN112464259B (zh) | Erp页面获取方法、装置、计算机设备和存储介质 | |
US11188240B2 (en) | Information processing system and non-transitory computer readable medium for access permission control | |
CN111104363B (zh) | 一种fpga云平台使用方法、装置、设备、介质 | |
CN113422796A (zh) | 一种信息处理方法及装置、存储介质 | |
CN114157470A (zh) | 一种令牌管理方法和装置 | |
CN109302446B (zh) | 跨平台访问方法、装置、电子设备及存储介质 |
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 |