模仿实验楼,写右侧的上传、下载、剪切板、全屏、共享屏幕功能

1、上传、下载

思路如下:

思路一:ftp方案 上传、下载的时候,其实就是先将文件上传到程序所在的服务器,然后再把文件通过ftp推送到指定服务器的指定目录就好了。关于ftp服务器推送,参见https://blog.csdn.net/wangmx1993328/article/details/82150290

思路二:scp方案。ftp那个还需要在每台虚拟化机器上安装ftp服务。有点繁琐。不如直接用scp命令进行拷贝。java调用scp的有很多方法。自行百度,下面是个样例

https://blog.csdn.net/CSDN_Hzx/article/details/85205683

不过这个方案,需要代码所在的服务器以及pve所在的服务器以及pve中的虚拟机都在同一网段。网络是互通的,才能用scp。在现实使用场景中,这个网络环境不太好实现。在机房中不可能随意分配服务器网段的ip。

所以在这个思路之上再次改进,我们可以在pve创建虚拟机的时候,弄一个共享目录。像nfs一样,每个虚拟机中有一个目录,可以映射到pve的指定目录。这样我们就可以直接scp到pve的目录。然后pve中的虚拟机就可以使用dhcp的方式,分配内网ip了

2、剪切板

思路一:

这个功能,比较复杂。可以使用vnc的api进行完成。vnc api中有一个方法如下

vnc api地址:https://www.realvnc.com/pt/developer/docs/latest/api/java/index.html

具体实现,后续补充

其实可以好好学学vnc api好多功能都可以实现。

如果这个接口可以实现客户端往服务器端发送命令,那很多问题就迎刃而解了。

思路二:前端实现

参见这篇博客https://www.cnblogs.com/redirect/p/10066730.html

下面是实验楼前端代码的跟踪

用到了guacamole去实现

3、全屏

通过前端实现

4、共享屏幕

只需要分享vnc连接即可

总结:

    后台创建虚拟机,我们直接使用的pve。从git上直接下载pve的项目然后集成到自己的项目里即可。创建直接调用clone方法,进行克隆,然后还有相应的开机、关机、删除等操作。

    至于前端显示,pve也有现成的vncshell api但是我们并没有采用。我们想直接得到vnc的界面然后再做操作。所以,我们在每台虚拟机上搭建了vncserver,然后暴露出该机器的vnc地址即可。前端调用的话,需要搭建一个代理服务器,用websocketfy进行转化连接。只需要将vncserver的ip、端口转化为token。生成一个新的地址,就能直接打开vnc的界面。然后直接调用vnc的共享屏幕、全屏、粘贴即可。(上传、下载还是需要自己写。通过后端代码实现)

其实除了上传下载,其他的几个功能都是前端来实现的。也可以直接调用pve生成的连接,显示出vnc页面,但是需要提前验证一下。获得cookie才行。接口参见pve api。

5、怎么将pve的界面投到自己项目的web界面上呢?

    实现办法如下:我们是用ifream实现的,直接把pve的novnc界面嵌套到ifream中,然后放到自己的项目中打开。利用ifream嵌套,巧妙的避开了pve的登录权限认证。

具体实现我这里有样例包,请自行下载。https://download.csdn.net/download/qq_29281307/12707372

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值