IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 2021-08-18 -> 正文阅读

[网络协议]2021-08-18

SpringBoot+Websocket+xterm+jsch实现一个网页版的Xshell

Websocket
??由于webssh需要实时数据交互,所以会选用长连接的WebSocket。

WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。HTTP 协议有一个缺陷:通信只能由客户端发起,HTTP 协议做不到服务器主动向客户端推送信息,所以WebSocket就是为了弥补HTTP协议的这种缺陷,而产生的。

在SpringBoot中配置Websocket的方式有两种:一种是通过@ServerEndpoint注解进行配置,一种是通过继承WebSocketConfigurer配置文件来实现(有多种形式)。本代码通过第二种,继承WebSocketConfigurer类,然后把处理器(Handler)和拦截器(Interceptor)注册到WebSocket的Java配置类中。
JSCH
JSCH是Java Secure Channel的缩写。JSCH是一个SSH2的纯Java实现。它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成它的功能到你自己的应用程序,即JSCH是这篇文章中实现SSH通信的核心API。

JSCH的API地址:http://epaul.github.io/jsch-documentation/javadoc/com/jcraft/jsch/package-summary.html

主要应用到了一下几个类:

JSch 核心配置类作用,同时也作为创建会话(Session)的工厂类
Session 通信的会话。主要提供了一些配置会话参数、连接SSH服务,打开Channel通道等方法。
Channel 通道,用于Shell命令的执行,包括的子类有ChannelExec, ChannelShell, ChannelSubsystem等。
ChannelSftp 文件通道,相关的类还有 SftpATTRS 、SftpProgressMonitor等。
UserInfo、UIKeyboardInteractive 用户信息接口,用于保存和获取在Session中的用户信息。
xterm
??xterm 是一个使用 TypeScript 编写的前端终端组件,可以直接在浏览器中实现一个命令行终端应用。
??在这里插入图片描述
源码解读
WebSSHStarter
??首先是SpringBoot的启动类WebSSHStarter,最简单的启动类。对应的应用参数,在config/application.yml配置文件中进行了配置。

WebSSHWebSocketConfig
??SpringBoot配置WebSocket的类,前面提到过,这里使用了继承WebSocketConfigurer类的方法进行了实现。在这个配置类中,把处理器(Handler)和拦截器(Interceptor)都注册到了WebSocket的注册器中了。

WebSocketInterceptor
??这个拦截器的意义不太大,只是拦截了request请求,并随机生成了一个UUID作为用户标识,传到了后续的逻辑中,在实际生成环境中,这里可以实现用户认证的代码逻辑。

WebSSHWebSocketHandler
??该处理器类实现了WebSocketHandler接口,主要用来完成Websocket消息和WebSocket生命周期中事件的处理,即这个类是WebSocket事件回调方法的入口。其实,在这类中,是通过调用WebSSHService接口的具体实现类来实现了具体的业务逻辑,所以在于SSH服务进行通信的核心代码是在WebSSHService接口的实现类中进行的。

WebSSHService接口、WebSSHServiceImpl实现类
??在WebSSHService接口中定义了四个方法,分别是:初始化、处理请求、回写响应数据、关闭连接。
??其中,在初始化方法中,主要实现了JSch对象的初始化,包括当前用户的信息的维护;处理请求方法中,主要处理两类请求,一类是连接操作请求,一类是命令操作请求,在该方法中用到了线程池ExecutorService的概念;回写响应数据方法,这里通过在进行连接操作的时候,就创建了一个线程,一直在监听是否有需要回写的数据,如果有的话,就直接通过org.springframework.web.socket.WebSocketSession的sendMessage()方法回写到客户端;关闭连接,主要是在连接断开后,会清理释放被占用的资源。

POJO类、常量类
??基础类。

RouterController类
??提供的进入控制台界面的入口类,对用的界面是webssh.html。

前端实现
??在static文件夹下是前端页面的实现,需要注意:在运行该项目时,需要修改连接到服务的地址、用户名密码等,在webssh.html文件中进行修改。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-19 12:24:57  更:2021-08-19 12:24:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 17:39:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码