利用浏览器插件实现VNC中文件拖拽传输的方法及装置与流程

文档序号:26910249发布日期:2021-10-09 14:51阅读:1138来源:国知局
利用浏览器插件实现VNC中文件拖拽传输的方法及装置与流程
利用浏览器插件实现vnc中文件拖拽传输的方法及装置
技术领域
1.本发明属于云计算技术领域,更具体地,涉及一种利用浏览器插件实现vnc中文件拖拽传输的方法及装置。


背景技术:

2.虚拟网络控制台(virtual network console,简写为vnc)是一款远程控制工具软件。利用远程帧缓冲(remote frame buffer,简写为rfb)协议进行传输,在云计算和虚拟化场景广泛使用。
3.传统的虚拟化软件如vmware,virtualbox等通过在虚拟机中安装tools(增强工具)结合专用客户端软件可实现主机和虚拟机之间文件拖拽双向传输,文件传输十分便捷。
4.novnc作为html5实现的开源vnc客户端,通过浏览器即可访问。因其轻量,便捷被普遍用在各大云计算、虚拟化的控制面板中。但也存在功能单一,无法传输文件的缺陷。
5.现有技术中大多为专用的客户端软件结合修改后的桌面协议实现文件传输,被具有客户端软件的厂商锁定,部分需要专用桌面协议,不支持双向传输等限制。此类方法存在安装繁琐,框架过重,资源利用率高等缺陷。在使用novnc作为控制面板时,想要实现文件传输只能借助winscp等支持ftp(file transfer protocol,文件传输协议),sftp(secret file transfer protocol,安全文件传送协议),scp(secure copy,安全复制协议)等文件传输协议的软件且主机和虚拟机之间网络需要互通。


技术实现要素:

6.针对现有技术的以上缺陷或改进需求,本发明提供了一种利用浏览器插件实现vnc中文件拖拽传输的方案,使用轻量便捷的novnc,实现像虚拟化专用软件客户端一样的文件拖拽双向传输功能,虚拟机和主机间的文件传输将方便快速,vnc易用性极大增强,云计算控制面板使用体验更加友好。
7.为实现上述目的,按照本发明的一个方面,提供了一种利用浏览器插件实现vnc中文件拖拽传输的方法,包括:
8.使用novnc作为客户端,通过在浏览器安装插件,捕获拖拽事件并分解拖拽元素,获取文件信息,读取文件内容;
9.按照扩展的rfb协议格式对文件内容进行数据封装并通过浏览器和vnc代理服务之间的websocket连接实现数据的双向传输,即主机文件向虚拟机的拖拽传输,和虚拟机文件向主机的拖拽传输。
10.本发明的一个实施例中,所述扩展的rfb协议格式,包括:
11.消息类型,用来区别其他消息事件;
12.传输方向标识,用来区分文件传输方向;
13.唯一标识,用来标记数据唯一性,数据分多次发送时,分片和重组避免混淆分片数据;
14.分片标识,用来标识收到的分片数据后续是否还有分片数据待接收;
15.分片编号,用来记录数据分片在此次传输中的编号;
16.文件信息长度,用来定义文件信息的字节长度;
17.文件信息,用来传输文件信息;
18.文件长度,用来定义文件数据的字节长度;
19.文件内容,用来传输文件内容。
20.本发明的一个实施例中,所述主机文件向虚拟机的拖拽传输,包括:
21.按照扩展的rfb协议格式进行数据封装并通过浏览器和vnc代理服务之间的websocket连接将数据传输至vnc代理服务,并且在虚拟机中安装代理软件,用来接收vnc代理服务转发到vnc服务的数据,虚拟机代理软件解析数据,完成文件的创建及写入,实现主机文件向虚拟机的拖拽传输。
22.本发明的一个实施例中,所述主机文件向虚拟机的拖拽传输,具体实现方式为:
23.本机发起文件拖拽动作,将文件拖拽至虚拟机novnc显示范围;
24.浏览器插件捕获拖拽动作,获取拖拽元素,进行文件读取;将读取到的文件信息及文件数据按照扩展的rfb协议格式进行封装;
25.通过浏览器和vnc代理服务之间的websocket连接进行传输;vnc代理服务将收到的数据转发到vnc服务;
26.vnc服务接收到数据判断数据类型,将扩展的rfb协议数据保留;
27.vnc代理服务通过和浏览器之间的websocket连接将vnc服务的数据转发给浏览器;
28.在虚拟机中的代理软件获取vnc服务保留的数据后,解析数据得到文件信息,根据文件信息创建文件,写入文件内容,直到文件传输完毕。
29.本发明的一个实施例中,所述虚拟机文件向主机的拖拽传输,包括:
30.利用浏览器插件捕获拖拽事件,通知虚拟机代理软件进行文件读取,按照扩展的rfb协议格式对文件内容进行数据封装并传递给vnc服务,vnc代理服务通过和浏览器之间的websocket连接将vnc服务数据转发到浏览器,浏览器插件收到传输的数据后,解析数据,完成文件的创建及写入,实现虚拟机文件向主机的拖拽传输。
31.本发明的一个实施例中,所述虚拟机文件向主机的拖拽传输,具体实现方式为:
32.虚拟机内发起文件拖拽动作,拖拽至novnc边界;
33.浏览器插件检测到拖拽事件,通知虚拟机代理软件;
34.虚拟机代理软件收到通知后,获取虚拟机内拖拽文件信息并开始文件读取,将文件信息及文件数据按照扩展的rfb协议格式进行封装,将封装后的数据传递给vnc服务;
35.vnc服务判断数据类型,将扩展的rfb协议传输数据至vnc代理服务;
36.vnc代理服务通过和浏览器之间的websocket连接将vnc服务的数据转发给浏览器;
37.浏览器插件解析浏览器收到的数据,按照扩展的rfb协议格式拿到文件信息,根据文件信息创建文件,写入文件内容,直到文件传输完毕。
38.本发明的一个实施例中,将文件信息及文件数据按照扩展的rfb协议格式进行封装,包括:
39.封装数据消息类型,传输方向标识,唯一标识字段,将读取到的文件信息按照定义的顺序填写到文件信息字段,并计算文件信息长度填写到文件信息长度字段,将读取到的文件长度经过计算填写到文件长度字段,将文件内容填写到文件内容字段,如果文件内容过大,则通过控制文件长度和文件内容,计算并填写分片编号和分片标识,实现断点续传,分多次传输数据;
40.所述主机文件向虚拟机的拖拽传输,文件传输方向为0,所述虚拟机文件向主机的拖拽传输,文件传输方向为1;或者,所述主机文件向虚拟机的拖拽传输,文件传输方向为1,所述虚拟机文件向主机的拖拽传输,文件传输方向为0。
41.按照本发明的另一方面,还提供了一种利用浏览器插件实现vnc中文件拖拽传输的装置,包括文件读取模块和文件传输模块,其中:
42.所述文件读取模块,用于使用novnc作为客户端,通过在浏览器安装插件,捕获拖拽事件并分解拖拽元素,获取文件信息,读取文件内容;
43.所述文件传输模块,用于按照扩展的rfb协议格式对文件内容进行数据封装并通过浏览器和vnc代理服务之间的websocket连接实现数据的双向传输,即主机文件向虚拟机的拖拽传输,和虚拟机文件向主机的拖拽传输。
44.本发明的一个实施例中,所述扩展的rfb协议格式,包括:
45.消息类型,用来区别其他消息事件;
46.传输方向标识,用来区分文件传输方向;
47.唯一标识,用来标记数据唯一性,数据分多次发送时,分片和重组避免混淆分片数据;
48.分片标识,用来标识收到的分片数据后续是否还有分片数据待接收;
49.分片编号,用来记录数据分片在此次传输中的编号;
50.文件信息长度,用来定义文件信息的字节长度;
51.文件信息,用来传输文件信息;
52.文件长度,用来定义文件数据的字节长度;
53.文件内容,用来传输文件内容。
54.本发明的一个实施例中,所述主机文件向虚拟机的拖拽传输,包括:按照扩展的rfb协议格式进行数据封装并通过浏览器和vnc代理服务之间的websocket连接将数据传输至vnc代理服务,并且在虚拟机中安装代理软件,用来接收vnc代理服务转发到vnc服务的数据,虚拟机代理软件解析数据,完成文件的创建及写入,实现主机文件向虚拟机的拖拽传输;
55.所述虚拟机文件向主机的拖拽传输,包括:利用浏览器插件捕获拖拽事件,通知虚拟机代理软件进行文件读取,按照扩展的rfb协议格式对文件内容进行数据封装并传递给vnc服务,vnc代理服务通过和浏览器之间的websocket连接将vnc服务数据转发到浏览器,浏览器插件收到传输的数据后,解析数据,完成文件的创建及写入,实现虚拟机文件向主机的拖拽传输。
56.总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有如下有益效果:
57.(1)本发明可以实现在不安装桌面客户端或虚拟化软件客户端情况下,利用浏览
器插件即可实现虚拟机和本地系统的双向文件拖拽传输且虚拟机和本地系统之间不需要网络互通,利用浏览器和vnc服务到虚拟机的传输通道进行数据传输。方便有效的解决了主机和虚拟机之间文件拖拽双向传输问题,使vnc使用更便捷,功能更丰富;
58.(2)作为各大云计算、虚拟化的控制面板,增加文件拖拽传输功能后的novnc,使用体验不亚于传统虚拟化软件专用客户端,既拥有云计算的成本优势又兼顾虚拟化软件客户端的便捷,此方法将对云计算、虚拟化控制面板的功能和使用体验带来极大提升。
附图说明
59.图1为本发明实施例中主机向虚拟机文件拖拽传输过程示意图;
60.图2为本发明实施例中主机向虚拟机文件拖拽传输流程示意图;
61.图3为本发明实施例中虚拟机向主机文件拖拽传输过程示意图;
62.图4为本发明实施例中虚拟机向主机文件拖拽传输流程示意图。
具体实施方式
63.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
64.本发明提出一种利用浏览器插件实现vnc中文件拖拽传输的方法,包括:
65.虚拟化计算节点部署vnc服务,虚拟化管理节点部署vnc代理服务,主机安装浏览器,待传输的虚拟机中安装虚拟机代理软件。主机浏览器使用novnc作为客户端,通过在浏览器安装插件,捕获拖拽事件并分解拖拽元素,获取文件信息,读取文件内容;
66.按照扩展的rfb协议格式对文件内容进行数据封装并通过浏览器和vnc代理服务之间的websocket连接实现数据的双向传输,即主机文件向虚拟机的拖拽传输,和虚拟机文件向主机的拖拽传输。
67.rfb协议扩展:
68.rfb是基于tcp的一个应用层协议,用于远程访问图形用户界面的简单协议。支持协议拓展和消息定义。
69.本发明定义新的消息事件filetransfer扩展协议内容,内包含文件信息,文件数据。浏览器插件和虚拟机代理软件将按照此协议格式进行数据的封装和解析,不影响原有vnc传输流程。
70.扩展的rfb协议格式,至少包括如下字段:
71.消息类型,用来区别其他消息事件;
72.传输方向标识,用来区分文件传输方向;
73.唯一标识,用来标记数据唯一性,数据分多次发送时,分片和重组避免混淆分片数据;
74.分片标识,用来标识收到的分片数据后续是否还有分片数据待接收;
75.分片编号,用来记录数据分片在此次传输中的编号;
76.文件信息长度,用来定义文件信息的字节长度;
77.文件信息,用来传输文件信息;
78.文件长度,用来定义文件数据的字节长度;
79.文件内容,用来传输文件内容。
80.如表1所示为扩展的rfb协议,包括:
81.消息类型,描述定义新的message

type,位于消息头,占用1个字节,类型为u8,用来区别其他消息事件。取值范围为和其他消息不重复的无符号整数。
82.后一个字段padding为填充字段,占用3个字节,为消息预留。
83.后一个字段类型为u8,为传输方向标识,占用1个字节,用来区分文件传输方向即data

transfer

direction。0代表主机向虚拟机传输,1代表虚拟机向主机传输。
84.后一个字段padding为填充字段,占用3个字节,为消息预留。
85.后一个字段类型为u8,为唯一标识,占用一个字节,用来标记数据唯一性即identification。数据分多次发送时,分片和重组避免混淆分片数据。
86.后一个字段padding为填充字段,占用3个字节,为消息预留。
87.后一个字段类型为u8,为分片标识,占用1个字节,用来标识收到的分片数据后续是否还有分片数据待接收即fragment

flag。1代表后续还有分片,0代表分片结束,所以最后一个分片该值为0。
88.后一个字段padding为填充字段,占用3个字节,为消息预留。
89.后一个字段类型为u32,为分片编号,占用4个字节,用来记录数据分片在此次传输中的编号即fragment

num。发送时分片编号从1开始递增,最后一个分片需要设置分片结束标志。
90.后一个字段类型为u32,为文件信息长度,占用4个字节,用来定义文件信息的字节长度即file

info

length,该长度为字节长度,填写时需要计算,按4字节对齐。
91.后一个字段类型为u8类型的数组,为文件信息,占用file

info

length个字节,用来传输文件信息即file

info,分别记录:文件名,短文件名,文件属性,创建日期,最后修改时间,路径,短路径,大小,类型信息。需要padding数据保持4字节对齐。
92.后一个字段类型为u32,为文件长度,用来定义文件数据的字节长度即text

length,该长度为字节长度,填写时需要计算,按4字节对齐。
93.最后的字段类型为u8类型的数组,为文件内容,占用text

length个字节,用来传输文件内容即text,可以通过控制text

length和text,计算并填写fragment

num和fragment

flag,实现断点续传,分多次传输数据。需要padding数据保持4字节对齐。
94.表1 rfb协议扩展说明
[0095][0096]
应当理解的是,上述关于表1的一般描述仅是示例性和解释性的,并不能限制本技术,比如其他形式顺序及字段长度的组合也可以。
[0097]
主机文件向虚拟机的拖拽传输方法为:
[0098]
利用浏览器插件捕获拖拽事件,并分解拖拽元素,获取文件信息,读取文件内容。按照扩展的rfb协议格式对文件内容进行数据封装并通过浏览器和vnc代理服务之间的websocket连接将数据传输至vnc代理服务。同时在虚拟机中安装代理软件,用来接收vnc代理服务转发到vnc服务的数据,虚拟机代理软件解析数据,完成文件的创建及写入。以此实现主机文件向虚拟机的拖拽传输。
[0099]
具体地,如图1所示,主机向虚拟机文件拖拽传输的过程如下:
[0100]
1.本机发起文件拖拽动作,将文件拖拽至虚拟机novnc显示范围;
[0101]
2.浏览器插件捕获拖拽动作,获取拖拽元素,进行文件读取。将读取到的文件信息及文件数据按照扩展的rfb协议格式进行封装。封装数据消息类型为filetransfer,文件传输方向为0,填写数据唯一标识和分片标识,将读取到的文件信息按照定义的顺序填写到file

info字段,并计算file

info长度填写到file

info

length字段,将读取到的文件长度经过计算填写到text

length字段,将文件内容填写到text字段。如果文件内容过大,可以通过控制text

length长度和text内容,计算并填写fragment

num和fragment

flag字段,实现断点续传,分多次传输数据。
[0102]
3.通过浏览器和vnc代理服务之间的websocket连接进行传输。vnc代理服务将收到的数据转发到vnc服务。
[0103]
4.vnc服务接收到数据判断数据类型,将扩展的rfb协议数据保留。
[0104]
5.虚拟机代理软件获取vnc服务保留的数据后,解析数据得到文件信息(按照定义好的filetransfer格式拿到file

info,text等数据),根据文件信息创建文件,写入文件内容,直到文件传输完毕。
[0105]
如图2所示,所述实现方法包括如下步骤:
[0106]
步骤201:拖拽文件到虚拟机控制面板范围。
[0107]
步骤202:浏览器插件捕获拖拽事件。
[0108]
步骤203:获取拖拽元素,获取文件信息和文件数据。判断获取成功进入步骤205,
获取失败则进入步骤204浏览器弹出告警框,提示失败信息。
[0109]
步骤205:将获取的文件信息和文件内容按照扩展的rfb协议进行数据封装,持续读取文件数据,封装数据进行传输,直到文件传输完毕。
[0110]
步骤206:将封装后的数据传输至vnc代理服务,转发到vnc服务。
[0111]
步骤207:虚拟机代理软件从vnc服务中读取数据,按照扩展的rfb协议解析数据。
[0112]
步骤208:判断数据解析结果,解析成功进入步骤209,解析失败则进入步骤204浏览器弹出告警框,提示失败信息。
[0113]
步骤209:虚拟机代理软件按照解析后数据中的文件信息创建文件。
[0114]
步骤210:判断文件创建状态,创建成功进入步骤211,创建失败则进入步骤204浏览器弹出告警框,提示失败信息。
[0115]
步骤211:虚拟机代理软件按照解析后数据中的文件内容进行文件数据写入。
[0116]
步骤212:判断文件是否写入完成。完成则进入步骤213,未完成则进入步骤211,持续写入文件数据直到文件数据数据全部写入完成。
[0117]
步骤213:文件写入完成后,拖拽传输完成。进入步骤214。
[0118]
步骤214:浏览器弹框提示文件传输完毕,主机向虚拟机拖拽传输流程结束。
[0119]
虚拟机文件向主机的拖拽传输的方法为:
[0120]
利用浏览器插件捕获拖拽事件,通知虚拟机代理软件进行文件读取,按照扩展的rfb协议格式对文件内容进行数据封装并传递给vnc服务。vnc代理服务通过和浏览器之间的websocket连接将vnc服务数据转发到浏览器,浏览器插件收到传输的数据后,解析数据,完成文件的创建及写入。以此实现虚拟机文件向主机的拖拽传输。
[0121]
具体地,如图3所示,虚拟机向主机文件拖拽传输过程如下:
[0122]
1.虚拟机内发起文件拖拽动作,拖拽至novnc边界。
[0123]
2.浏览器插件检测到拖拽事件,通知虚拟机代理软件。
[0124]
3.虚拟机代理软件收到通知后,获取虚拟机内拖拽文件信息并开始文件读取。将文件信息及文件数据按照扩展的rfb协议格式进行封装。封装数据message

type为filetransfer,文件传输方向为1,填写数据唯一标识和分片标识,将读取到的文件信息按照定义的顺序填写到file

info字段,并计算file

info长度填写到file

info

length字段,将读取到的文件长度经过计算填写到text

length字段,将文件内容填写到text字段。如果文件内容过大,可以通过控制text

length长度和text内容,计算并填写fragment

num和fragment

flag字段,实现断点续传,分多次传输数据。将封装后的数据传递给vnc服务。
[0125]
4.vnc服务判断数据类型,将扩展的rfb协议传输数据至vnc代理服务。
[0126]
5.vnc代理服务通过和浏览器之间的websocket连接将vnc服务的数据转发给浏览器。
[0127]
6.浏览器插件解析浏览器收到的数据,按照定义好的filetransfer格式拿到文件信息(包括file

info,text等数据),根据文件信息创建文件,写入文件内容,直到文件传输完毕。
[0128]
如图4所示,所述实现方法包括如下步骤:
[0129]
步骤401:从虚拟机控制面板,拖拽文件到控制面板边界。
[0130]
步骤402:浏览器插件检测拖拽事件,检测成功进入步骤403,检测失败则进入步骤
404通知虚拟机代理软件,代理软件提示框提示失败信息。
[0131]
步骤403:浏览器插件通知虚拟机代理软件,代理软件获取虚拟机内的拖拽元素,获取文件信息和文件数据。判读获取成功进入步骤405,获取失败则进入步骤404通知虚拟机代理软件,代理软件提示框提示失败信息。
[0132]
步骤405:将获取的文件信息和文件内容按照扩展的rfb协议进行数据封装,持续读取文件数据,封装数据进行传输,直到文件传输完毕。
[0133]
步骤406:将封装后的数据传输至vnc服务,通过vnc代理服务转发到浏览器。
[0134]
步骤407:浏览器插件获取到数据后,按照扩展的rfb协议解析数据。
[0135]
步骤408:判读解析结果,解析成功进入步骤409,解析失败则进入步骤404通知虚拟机代理软件,代理软件提示框提示失败信息。
[0136]
步骤409:浏览器插件按照解析后数据中的文件信息创建文件。
[0137]
步骤410:判读文件创建状态,创建成功进入步骤411,创建失败则进入步骤404通知虚拟机代理软件,代理软件提示框提示失败信息。
[0138]
步骤411:浏览器插件按照解析后数据中的文件内容进行文件数据写入。
[0139]
步骤412:判读文件是否写入完成。完成则进入步骤413,未完成则进入步骤411,持续写入文件数据直到文件数据数据全部写入完成。
[0140]
步骤413:文件写入完成后,拖拽传输完成。进入步骤414。
[0141]
步骤414:代理软件提示框提示文件传输完成,虚拟机向主机拖拽传输流程结束。
[0142]
进一步地,本发明还提供了一种利用浏览器插件实现vnc中文件拖拽传输的装置,包括文件读取模块和文件传输模块,其中:
[0143]
所述文件读取模块,用于使用novnc作为客户端,通过在浏览器安装插件,捕获拖拽事件并分解拖拽元素,获取文件信息,读取文件内容;
[0144]
所述文件传输模块,用于按照扩展的rfb协议格式对文件内容进行数据封装并通过浏览器和vnc代理服务之间的websocket连接实现数据的双向传输,即主机文件向虚拟机的拖拽传输,和虚拟机文件向主机的拖拽传输。
[0145]
其中,所述扩展的rfb协议格式,包括:
[0146]
消息类型,用来区别其他消息事件;
[0147]
传输方向标识,用来区分文件传输方向;
[0148]
唯一标识,用来标记数据唯一性,数据分多次发送时,分片和重组避免混淆分片数据;
[0149]
分片标识,用来标识收到的分片数据后续是否还有分片数据待接收;
[0150]
分片编号,用来记录数据分片在此次传输中的编号;
[0151]
文件信息长度,用来定义文件信息的字节长度;
[0152]
文件信息,用来传输文件信息;
[0153]
文件长度,用来定义文件数据的字节长度;
[0154]
文件内容,用来传输文件内容。
[0155]
进一步地,所述主机文件向虚拟机的拖拽传输,包括:按照扩展的rfb协议格式进行数据封装并通过浏览器和vnc代理服务之间的websocket连接将数据传输至vnc代理服务,并且在虚拟机中安装代理软件,用来接收vnc代理服务转发到vnc服务的数据,虚拟机代
理软件解析数据,完成文件的创建及写入,实现主机文件向虚拟机的拖拽传输;
[0156]
所述虚拟机文件向主机的拖拽传输,包括:利用浏览器插件捕获拖拽事件,通知虚拟机代理软件进行文件读取,按照扩展的rfb协议格式对文件内容进行数据封装并传递给vnc服务,vnc代理服务通过和浏览器之间的websocket连接将vnc服务数据转发到浏览器,浏览器插件收到传输的数据后,解析数据,完成文件的创建及写入,实现虚拟机文件向主机的拖拽传输。
[0157]
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1