新闻详情

新闻详情

首页 / 资讯中心 / 详情

如何用wterm打造Web SSH客户端:WebSocket-SSH桥接实战教程

发布时间:2026/11/15 10:33:40来源:尧图网络
如何用wterm打造Web SSH客户端:WebSocket-SSH桥接实战教程
如何用wterm打造Web SSH客户端WebSocket-SSH桥接实战教程【免费下载链接】wtermA terminal emulator for the web项目地址: https://gitcode.com/gh_mirrors/wterm1/wtermwterm 是一款面向 Web 的高性能终端模拟器核心用 Zig 编译为约 26 KB 的 WASM并原生内置 WebSocket 传输。本文将带你用 wterm 打造一个浏览器里的 Web SSH 客户端——无需任何桌面软件一条 WebSocket-SSH 桥接链路即可让浏览器直接登录远程服务器。 方案架构三段式 WebSocket-SSH 桥接传统 SSH 只能跑在本地终端里而 wterm 让终端住进浏览器。整个 Web SSH 客户端由三层组成层级技术职责浏览器端wterm/react终端组件渲染 xterm-256color 终端、采集键盘输入桥接层Node.js ws ssh2WebSocket 消息与 SSH Shell 流互相同步转发远程端标准 SSH 服务器提供真实的登录 Shell数据流向非常直白用户在浏览器表单填写主机、端口、用户名与凭据浏览器把连接参数作为第一条 WebSocket 消息发给/api/ssh服务端据此建立 SSH 连接并打开 Shell 流之后两个方向的数据终端输出 / 键盘输入经 WebSocket 双向透传完整示例说明见 examples/ssh/README.md。 快速上手5 分钟跑通 SSH 示例一键克隆与安装git clone https://gitcode.com/gh_mirrors/wterm1/wterm cd wterm pnpm install zig build 提示zig build用于从 Zig 源码生成 WASM 二进制。若只运行前端示例npm 包中已内置编译好的 WASM可跳过此步。启动开发服务器pnpm --filter ssh dev启动后浏览器打开ssh-example.wterm.localhost你会先看到一个连接表单主机 / 端口 / 用户名 / 密码或私钥。点击Connect一个完整的远程 Shell 就出现在页面上——可以直接运行ls、vim等任意命令。 桥接核心服务端如何把 WebSocket 接到 SSH桥接逻辑全部集中在 server.ts它只做了三件事1. WebSocket 升级路由Next.js 启动时监听upgrade事件路径为/api/ssh的请求交给WebSocketServer处理其余升级请求如 HMR仍由 Next.js 接管见 server.ts。2. 首条消息即连接参数第一条消息是一段 JSON包含host、port、username以及password或privateKey之一见 server.ts。3. Shell 流与 WebSocket 双向管道SSH 连接ready后服务端用xterm-256color打开一个 80×24 的 Shellstream的data事件直接转发给 WebSocket浏览器发来的每条消息则写入stream任一方向关闭时另一端随之清理见 server.ts。这种双向管道写法没有任何自定义协议换成其他流式后端时思路完全通用。 前端连接表单与终端回显前端实现位于 app/page.tsx连接表单Host / Port / Username / 认证方式密码或私钥用户名会存入localStorage方便下次登录终端接入Terminal通过onData回调把用户输入ws.send()出去收到的二进制帧解码后交给write()回显见 app/page.tsx连接状态机disconnected → connecting → connected / error四态驱动界面切换React 之外wterm 还提供 Vue 与 Svelte 组件以及零依赖的WTerm原生 JS 写法快速入门可参考 Get Started 文档。⚙️ 进阶用 WebSocketTransport 实现自动重连示例为了简洁直接手写了WebSocket而wterm/core内置了生产级传输层 WebSocketTransport开箱即得三项能力能力说明二进制帧binaryType arraybuffer减少字符串编解码开销指数退避重连断线后 1s 起步、逐步翻倍、上限 30s见 transport.ts离线缓冲未连接时send()的消息自动排队重连成功后按序冲刷替换只需几行import { WebSocketTransport } from wterm/core; const transport new WebSocketTransport({ url: wss://your-host/api/ssh }); transport.onData (data) term.write(data); transport.connect();另外请保持终端的autoResize开启窗口缩放时 wterm 会应用新的行列尺寸并触发onResize桥接端据此同步远端 PTY输出才不会错位换行原理见 configuration.mdx。️ Web SSH 客户端常见问题排查症状原因与解法WebSocket 连不上https://页面必须使用wss://否则被浏览器 Mixed Content 拦截连接后立即断开检查防火墙是否放行 22 端口并查看服务端回传的SSH error红字提示中文 / emoji 错位确认使用新版 wterm内置核心原生支持 CJK 与 emoji 宽字符对齐粘贴多行文本异常wterm 已支持括号粘贴bracketed paste请确认桥接端原样透传字节✅ 总结三步拥有你的在线 SSH 入口用 wterm 搭建 Web SSH 客户端的核心只有两步浏览器里放一个终端服务端把 WebSocket 接到 SSH Shell 流。得益于 wterm 的 ZigWASM 内核与 DOM 渲染浏览器终端不仅快还天然支持文本选中、复制粘贴、屏幕阅读器与 OSC 8 超链接。按 examples/ssh/ 示例起步几分钟内你就能拥有自己的在线 SSH 终端。【免费下载链接】wtermA terminal emulator for the web项目地址: https://gitcode.com/gh_mirrors/wterm1/wterm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/15 4:54:16

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/15 2:04:12

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/14 10:11:15

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/14 17:14:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/14 16:35:50

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/15 4:06:36

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉