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

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

2、剪切板

思路一:

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

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

具体实现,后续补充

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

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

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

思路二:前端实现

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

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

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

用到了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

 

你可能感兴趣的:(虚拟化)