返回顶部
首页 > 资讯 > 精选 >react express怎么实现webssh demo解析
  • 898
分享到

react express怎么实现webssh demo解析

2023-07-05 21:07:30 898人浏览 泡泡鱼
摘要

本篇内容介绍了“React express怎么实现WEBssh demo解析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成

本篇内容介绍了“React express怎么实现WEBssh demo解析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

实现 WebSSH 的基本思路

WebSSH 可以分成以下几个模块:

  • 前端界面:使用 xterm.js 实现一个基于浏览器的终端界面。

  • websocket 连接:使用 WebSocket 连接连接 WebSSH 服务器后端

  • SSH 连接:使用 ssh3.js 库连接 SSH 服务器,然后在 WebSocket 和 SSH 之间建立一个双向通讯。

实现 Demo 的代码

服务器端代码

服务器端代码使用 node.js 和 WebSocket 模块实现,主要用于连接到远程 SSH 服务器并与前端建立 WebSocket 连接。

const SSHClient = require('ssh3').Client;const utf8 = require('utf8');export const createNewServer = (MachineConfig: any, socket: any) => {  const ssh = new SSHClient();  const { host, username, passWord } = machineConfig;  // 连接成功  ssh.on('ready', function () {    socket.send('\r\n*** SSH CONNECTION SUCCESS ***\r\n');    ssh.shell(function (err: any, stream: any) {      // 出错      if (err) {        return socket.send('\r\n*** SSH SHELL ERROR: ' + err.message + ' ***\r\n');      }      // 前端发送消息      socket.on('message', function (data: any) {        stream.write(data);      });      // 通过sh发送消息给前端      stream.on('data', function (d: any) {        socket.send(utf8.decode(d.toString('binary')));        // 关闭连接      }).on('close', function () {        ssh.end();      });    })    // 关闭连接  }).on('close', function () {    socket.send('\r\n*** SSH CONNECTION CLOSED ***\r\n');    // 连接错误  }).on('error', function (err: any) {    socket.send('\r\n*** SSH CONNECTION ERROR: ' + err.message + ' ***\r\n');    // 连接  }).connect({    port: 22,    host,    username,    password  });}

前端代码

前端代码主要包括一个包装 xterm.js 的 React 组件和一些 WebSockets 相关的代码。

import React, { useEffect, useRef } from 'react';import { Terminal } from 'xterm';import { WebLinksAddon } from 'xterm-addon-web-links';import { FitAddon } from 'xterm-addon-fit';import 'xterm/CSS/xterm.css';const FontSize = 14;const Col = 80;const WebTerminal = () => {  const webTerminal = useRef(null);  const ws = useRef(null);  useEffect(() => {    // 初始化终端    const ele = document.getElementById('terminal');    if (ele && !webTerminal.current) {      const height = ele.clientHeight;      // 初始化      const terminal = new Terminal({        cursorBlink: true,        cols: Col,        rows: Math.ceil(height / FontSize),      });      // 辅助      const fitAddon = new FitAddon();      terminal.loadAddon(new WebLinksAddon());      terminal.loadAddon(fitAddon);      terminal.open(ele);      terminal.write('Hello from \x1B[1;3;31mxterm.js\x1B[0m $ ');      fitAddon.fit();      webTerminal.current = terminal;    }    // 初始化ws连接    if (ws.current) ws.current.close();    const socket = new WebSocket('ws://localhost:3001');    socket.onopen = () => {      socket.send('connect success');    };    ws.current = socket;  }, []);  useEffect(() => {    // 新增监听事件    const terminal = webTerminal.current;    const socket = ws.current;    if (terminal && socket) {      // 监听      terminal.onKey(e => {        const { key } = e;        socket.send(key);      });      // ws监听      socket.onmessage = e => {        console.log(e);        if (typeof e.data === 'string') {          terminal.write(e.data);        } else {          console.error('格式错误');        }      };    }  }, []);  return <div id="terminal"  style={{ backgroundColor: '#000', width: '100vw', height: '100vh' }}/>;};export default WebTerminal;

WebSSH 组件借助 Hooks 特性进行 WebSocket 和 xterm.js 的初始化。具体来说,这个组件使用了 useEffect Hook 在组件挂载时完成以下工作:

  • 初始化 Terminal 组件。

  • 初始化 WebSocket 连接。

  • 为 Terminal 组件绑定输入事件和 WebSocket 发送数据的逻辑。

在 React 应用中使用 WebSSH 组件

你需要在你的 React的index.js 文件中引入 WebSSH 组件,并在你的应用中渲染它:

import WebSSH from './components/WebSSH';import React from 'react';import ReactDOM from 'react-dom';ReactDOM.render(  <WebSSH />,  document.getElementById('root'));

效果

react express怎么实现webssh demo解析

“react express怎么实现webssh demo解析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: react express怎么实现webssh demo解析

本文链接: https://lsjlt.com/news/355432.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • react express实现webssh demo解析
    目录正文实现 WebSSH 的基本思路实现 Demo 的代码服务器端代码前端代码在 React 应用中使用 WebSSH 组件效果总结正文  下面是一个简单的 WebSS...
    99+
    2023-05-14
    react express实现webssh react express实现webssh
  • react express怎么实现webssh demo解析
    本篇内容介绍了“react express怎么实现webssh demo解析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
    99+
    2023-07-05
  • 怎么实现gulp demo
    这篇文章主要介绍“怎么实现gulp demo”,在日常操作中,相信很多人在怎么实现gulp demo问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么实现gulp demo”...
    99+
    2024-04-02
  • 怎样实现对VS2005 Express功能的分析
    本篇文章给大家分享的是有关怎样实现对VS2005 Express功能的分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。微软官网对技术人员进行研究表示,许多使用VS2005 E...
    99+
    2023-06-17
  • nodejs中怎么实现express路由
    这篇文章将为大家详细讲解有关nodejs中怎么实现express路由,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。路由通常HTTP URL的格式是这样的:h...
    99+
    2024-04-02
  • Nodejs中Express 常用中间件 body-parser 实现解析
    写在前面 body-parser是非常常用的一个express中间件,作用是对post请求的请求体进行解析。使用非常简单,以下两行代码已经覆盖了大部分的使用场景。 app.use(bodyParser....
    99+
    2022-06-04
    中间件 常用 Express
  • react怎么实现hooks
    这篇文章主要介绍“react怎么实现hooks”,在日常操作中,相信很多人在react怎么实现hooks问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”react怎么实现hoo...
    99+
    2024-04-02
  • node.js中怎么利用express解析post请求
    node.js中怎么利用express解析post请求,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、www-form-urlencoded...
    99+
    2024-04-02
  • Android手机端小米推送Demo解析和实现方法
    最近这几个月都是在准备找工作和找工作中,付出了很多,总算是有点收获,所以都没有怎么整理笔记。到了最近才有空把自己的笔记整理一下发上来,分享一下我的学习经验。 推送 由于最近项...
    99+
    2022-06-06
    方法 小米 demo Android
  • uni-app结合PHP实现单用户登陆demo及解析
    目录单用户登陆uni-app socket单用户登陆例推送单用户登陆例单用户登陆 即在一个应用中,同一个用户只能在线登陆一个,一个用户登陆,在其他设备上会被即时挤下线,确认后清空登陆...
    99+
    2023-05-20
    uni-app结合PHP实现单用户登陆 PHP单用户登陆
  • react源码层深入刨析babel解析jsx实现
    目录jsxv16.x及以前版本v17及之后版本ReactElementReact.createElementReactElementReact.Component总结经过多年的发展,...
    99+
    2022-11-13
    react babel解析jsx react babel
  • React Native Popup怎么实现
    这篇文章主要介绍“React Native Popup怎么实现”,在日常操作中,相信很多人在React Native Popup怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希...
    99+
    2023-06-30
  • react怎么实现滑动
    本教程操作环境:Windows10系统、react18.0.0版、Dell G3电脑。react怎么实现滑动?react 实现左右滑动效果React 中滑动手势的实现最近做了一点关于react在移动端滑动翻页的功能。开始搜索了一下,发现居然...
    99+
    2023-05-14
    滑动 React
  • react怎么实现缩放
    本教程操作环境:Windows10系统、react18.0.0版、Dell G3电脑。react怎么实现缩放?react图片缩放、平移(position、transform实现)很多网页都会给文案附上一些图片补充描述,例如在说到地址时,会在...
    99+
    2023-05-14
    React
  • react不能解析css怎么办
    本教程操作环境:Windows10系统、react18.0.0版、Dell G3电脑。react不能解析css怎么办?react 模块化引入外部css文件不生效问题处理react 中引入外部css/less文件时,如果直接引入 =》 imp...
    99+
    2023-05-14
    React css
  • Node.js中怎么实现一个express框架
    本篇文章给大家分享的是有关Node.js中怎么实现一个express框架,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。express的基本用法...
    99+
    2024-04-02
  • Node.js+express怎么实现上传大文件
    这篇“Node.js+express怎么实现上传大文件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Node.js+expr...
    99+
    2023-06-17
  • Express怎么实现定时发送邮件
    今天小编给大家分享一下Express怎么实现定时发送邮件的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。在开发中我们有时候需要...
    99+
    2023-07-06
  • Canvas实现二娃翠花回家之路小游戏demo解析
    目录一、玩法介绍二、预览效果三、开发难点四、核心实现步骤1、创建画布和按键元素2、创建人物类3、创建两个人物实例4、监听鼠标事件5、绘制路径6、判断碰撞7、开始和重置游戏8、实现动画...
    99+
    2023-05-15
    Canvas回家之路小游戏 Canvas 游戏
  • vue vue-esign签字板的demo怎么实现
    本篇内容主要讲解“vue vue-esign签字板的demo怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue vue-esign签字板的demo怎么实现”吧!vu...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作