2023 ~【VUE+Xterm+Websocket】模拟SSH连接效果

这篇具有很好参考价值的文章主要介绍了2023 ~【VUE+Xterm+Websocket】模拟SSH连接效果。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、安装包 xterm、 xterm-addon-attach、 xterm-addon-fit

cnpm install xterm --save
cnpm install xterm-addon-attach --save
cnpm install xterm-addon-fit --save

安装最新版本即可文章来源地址https://www.toymoban.com/news/detail-733468.html

"xterm": "^5.2.1",
"xterm-addon-attach": "^0.8.0",
"xterm-addon-fit": "^0.7.0"

2、在页面中使用

<div id="terBox" ref="terminal" style="padding-top: 5px; height: calc(100vh - 294px)" />
<script>
import "xterm/css/xterm.css";
import { Terminal } from "xterm";
import { FitAddon } from "xterm-addon-fit"; // 全屏
import { AttachAddon } from "xterm-addon-attach";

export default {
  	name: "Ssh",
	data() {
	    return {
	      term: null,
	      socket: "",
	    };
	},
	mounted() {
	  this.initTerm();
	  window.addEventListener("resize", this.resizeScreen);
	},
	methods: {
	    initTerm() {
	      this.$nextTick(() => {
	        var rowHeight = document.getElementById("terBox").clientHeight; // 高
	        // 1.xterm终端初始化
	        let term = new Terminal({
	          rendererType: "canvas", //渲染类型
	          rows: Math.trunc(rowHeight / 17 - 1)  || 36, //行数
	          // cols: 10, // 不指定行数,自动回车后光标从下一行开始
	          convertEol: true, //启用时,光标将设置为下一行的开头
	          // scrollback: 50, //终端中的回滚量
	          disableStdin: false, //是否应禁用输入
	          windowsMode: true, // 根据窗口换行
	          cursorStyle: "underline", //光标样式
	          cursorBlink: true, //光标闪烁
	          theme: {
	            foreground: "#ECECEC", //字体
	            background: "#000000", //背景色
	            cursor: "help", //设置光标
	            lineHeight: 20,
	          },
	        });
	
	        // 2.webSocket初始化 (不需要另外的方法)
	        const socketUri = "ws://" + process.env.VUE_APP_SOCKET + ":9207/sshSocket";
	        this.socket = new WebSocket(socketUri); // 发起连接
	
	        // 3.websocket集成的插件
	        const attachAddon = new AttachAddon(this.socket);
	        const fitAddon = new FitAddon(); // 全屏插件
	        term.loadAddon(attachAddon);
	        term.loadAddon(fitAddon);
	        term.open(this.$refs.terminal);
	        fitAddon.fit();
	        term.focus();
	        this.term = term;
	        // 发送 term 数据
	        this.term.onData((data) => {
	          this.sendSSH({
	            operate: "command",
	            host: this.loginForm.host,
	            port: this.loginForm.port || 22,
	            command: data,
	            rows: this.term.rows,
	            cols: this.term.cols,
	          }); // 初次连接SSH
	        });
	      });
	    },
	    /** 当屏幕变化时修改 */
	    resizeScreen() {
	      var colWidth = document.getElementById("terBox").clientWidth; // 宽
	      var rowHeight = document.getElementById("terBox").clientHeight; // 高
	      // 注意修改 用 term.resize(cols, rows),不能用 term.cols = cols(只能取值)
	      this.term.resize(Math.trunc(colWidth / 9), Math.trunc(rowHeight / 17 - 1)) // 修改 cols 和 rows
	    },
	}
}
</script>

到了这里,关于2023 ~【VUE+Xterm+Websocket】模拟SSH连接效果的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue项目中使用websocket连接后立马断开(websocket连接后瞬间断开)

    问题原因(连接后断连的原因):前端给后端传递Authourization(token验证)时,后端需要接收处理并设置响应标头,不然就容易出现上叙错误; 解决方法: 1、传递参数和验证权限; 2、后端处理后前端收到的响应标头;  然后,连接后断连的问题就解决啦!感觉有用,就一键

    2024年02月11日
    浏览(39)
  • vue-页面使用websocket建立连接用于测试

    前言 websocket双向通讯在项目中经常使用,但一般都是封装成第三方包,登录,退出建立连接。 这样使用是合理,但不便于测试,其实在.vue页面通过new方式可以直接使用websocket。 在页面实例加载完成之后连接websocket,在组件销毁时候断开websocket连接。 注意具体情况要跟后端

    2024年02月15日
    浏览(28)
  • vue 使用stompjs websocket连接rabbitmq

    1. 首先确保rabbitmq服务已开启web-stomp         1.1 登录rabbitmq web控制台         1.2 在overview目录下 下拉找到Ports and contexts 看列表有没有http/web-stomp         1.3 如果没有需要开启 window/centos 进入rabbitmq安装目录的bin目录下执行rabbitmq-plugins enable rabbitmq_web_stomp rabbitmq_stomp rabbi

    2024年02月14日
    浏览(32)
  • 在vue3项目中进行websocket的连接

    首先是安装 我这边是封装了一个websocket的类 再进行使用

    2024年04月16日
    浏览(26)
  • 使用Vue.js实现文字跑马灯效果

    实现文字跑马灯效果,首先用到 substring()截取 和 setInterval计时器 clearInterval()清除计时器 效果如下: 实现代码如下: 以上是实现文字跑马灯效果,如有不足的地方,欢迎在评论区留言。

    2023年04月19日
    浏览(33)
  • 运维相关(一) - Vue项目配置WebSocket连接{ws、wss 连接方式}

    项目使用的是ruoyi的前后端分离框架 项目需要使用到 websocket , 在本地使用 ws 连接方式是没问题 , 但是服务器上边使用的是nginx + ssl 证书 https域名访问的方式部署的 使用普通的 ws 连接是不可以成功的 需要使用 wss的方式 2.1 前端 vue.config.js 的代码 这里target: 里边指向的都是后

    2024年02月01日
    浏览(37)
  • vue 项目使用three.js 实现3D看房效果

    0.前言 该教程能帮助直接写出vue项目的3D看房效果!!! 先上效果图 1.安装依赖 2.vue代码 这里文件名为three.vue 代码非原创,出处 vue3+threejs实现全景看房 (异步加载 BOLLROOM 部件为对原代码的修改) 注意这里的hdr 文件必须要放在assets文件夹中,且要通过import模块的形式导入!

    2024年02月13日
    浏览(35)
  • Vue.js WebSocket 整合指南:实时通信的完美解决方案

    WebSocket是一种在Web应用程序中实现双向通信的通信协议,它允许客户端和服务器之间建立持久的、低延迟的连接,以实现实时数据传输。相比传统的HTTP请求,WebSocket更适合需要实时性和交互性的应用程序。 WebSocket解决了传统HTTP请求的一些限制,例如: 实时性: 传统HTTP请求需

    2024年02月04日
    浏览(36)
  • vue+flv.js+SpringBoot+websocket实现视频监控与回放

    需求:vue+springboot的项目,需要在页面展示出海康的硬盘录像机连接的摄像头的实时监控画面以及回放功能. 之前项目里是纯前端实现视频监控和回放功能.但是有局限性.就是ip地址必须固定.新的需求里设备ip不固定.所以必须换一种思路. 通过设备的主动注册,让设备去主动连接服

    2024年02月02日
    浏览(28)
  • Vue.js2+Cesium1.103.0 十一、Three.js 炸裂效果

    Demo ThreeModelBoom.vue index.vue

    2024年02月11日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包