问题标签 [xtermjs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
xtermjs - xtermjs fit 插件导致行覆盖前一行
fit 插件会导致 xtermjs 中的一行覆盖之前的行。具体来说,当用户键入时,半行被填满,然后字符开始从该行的左侧出现并覆盖之前写在那里的字符。
node.js - 如何将 node-pty 重新初始化为不同的 shell 类型?
我正在使用 xterm.js、react 和 node-pty 设置浏览器内终端。我已经通过 websockets 在服务器上运行了 node-pty 进程。终端实际工作,它在反应 UI 中可见。我可以使用以下方法将终端初始化为node
或python3
首次加载:
我可以像这样杀死这个过程:
只要在 UI 的终端中输入字符,就会触发此侦听器。
这感觉不像是处理这个问题的惯用方式,但我想做的是从 UI 中的 websocket 发出一条消息,这取决于反应状态,并node-pty
使用不同的初始 shell 重新生成一个新终端,即从 切换node
到python3
。
我发现销毁终端所在的 HTML 节点会导致open
服务器上的侦听器再次触发,但我认为重新打开时不可能包含消息。
我的问题是,如何重新生成node-pty
进程并动态更改 shell 类型?
javascript - 可以在 nodejs 服务器端使用 xterm.js 吗?
我正在 NodeJs 上创建一个多工终端,用于将数据渲染到 StdOut 我正在使用terminal.js,但它有点小故障,所以我决定使用xterm.js一个乞丐社区如何处理它。
但是当我尝试在 NodeJs 上导入 xterm.js 时,会出现此错误:
那么,在服务器端(nodejs)使用 Xterm.Js 是不是很遥远?
node.js - 使用 socket.io 流式传输交互式 shell 会话
我有 3 个组件device
和.server
frontend (admin)
服务器
使用 2 个命名空间/admin
和/client
.
如果来自命名空间的套接字/admin
发送数据,则服务器将其传递给/client
命名空间。如果来自命名空间的套接字/client
发送数据,则服务器将其传递给/admin
命名空间。
设备
用于socket.io-client
连接socket.io
服务器。
使用 启动交互式 shell 会话node-pty
。
前端
最后,我有了用于xterm.js
在浏览器中创建终端的前端。我正在使用vue
. 浏览器客户端也连接到命名空间socket.io
上的服务器/admin
。基本上我有这个:
问题
❌ 启动 pty 会话似乎可以工作,至少现在报告了错误。然而,似乎onData
侦听器回调从未被触发,即使我有ptyProcess.write()
什么东西。
❌ 从一路获取输入xterm
到设备ptyProcess.write
似乎不起作用。我可以看到通过 socket.io 套接字一直传递到设备的数据。但从那里什么也没有发生。我想念什么?我也没有在xterm
窗口中看到我的输入。
bash - 如何使用 node-pty 创建 bash shell?
我的操作系统是windows。我想使用 xterm 和 node-pty 创建一个 bash shell。有这行代码:
this.shell = os.platform() === 'win32' ? 'powershell.exe' : 'bash';
使用它在浏览器中呈现终端。现在假设如果我写:
this.shell = os.platform() === 'win32' ? 'bash' : 'powershell.exe';
或者
this.shell = os.platform() === 'linux' ? 'powershell.exe' : 'bash';
为什么不渲染 bash shell。它给了我这个错误:
对不起,我对这个问题很陌生......
nginx - Nginx 用作反向代理时删除 ansi 转义码
我正在使用xterm.js和chalk.js在我用作个人网站的 Web 终端中创建彩色字符串。
当我在本地运行它时,它会根据需要工作:
但是当我在生产中运行它时,颜色消失了:
要将xterm.js与后端连接,我使用socket.io,当我调试它时,我看到了客户端收到的差异
- 当地的:
- 与产品:
正如您在 prod 中看到的,所有由chalk.js添加的 ANSI 转义码都消失了。
我的 Nginx 服务器配置为反向代理以访问我的 NodeJS 的后端,我怀疑配置错误导致 Nginx “吃掉”所有 ANSI 转义码。
我需要在我的 Nginx 配置文件中更改什么以通过 ANSI 转义码?
- 我的 Nginx 配置在这里(它是我的域的配置
enabled-sited
notnginx.conf
:
- 我的
nginx.conf
:
web-applications - 需要在我的 Web 应用程序中嵌入 SSH 终端或基于 Web 的终端,它可以通信并响应我输入的命令
我在我的网络应用程序中使用 Angular。为了实现终端,我使用了https://xtermjs.org和NgTerminal组件。使用这两个组件,我可以显示一个终端窗口,如本演示https://qwefgh90.github.io/ng-terminal中所示,但这没什么,因为它没有执行我输入的任何命令。我希望这个终端与计算机通信并执行命令。
例如:如果我输入 ipconfig 那么终端应该显示计算机 IP
我已经做了很多研发,并且知道可以使用 WebSocket 来实现它,我使用它但仍然没有运气。
非常感谢您浏览我的问题,请分享您的宝贵想法和建议,以便我可以创建响应式 Web 终端 SSH。谢谢
node.js - xtermjs 如何从 webhook 或其他连接类型链接服务器和客户端
我了解您使用 node-pty 作为后端,使用 xterm 作为前端,有时附加连接,但我不知道如何建立连接 我确实查看了我看到的其他类似问题,但他们要么没有回答,要么说有html 中的客户端和主 js 中的服务器,但我希望服务器能够连接到您应该看到的文件,以了解我在做什么和安全。我也记账了,因为我找不到答案,所以这就是我是新手的原因。
reactjs - 以编程方式将输入传递给基于 Web 的终端
我想使用 xtermjs、socket.io、ssh2 等库在 React App 上实现基于 Web 的终端。我发现了很多在某种程度上模拟 TTY 行为的工作示例,但我确实有一个特定要求:虽然浏览器上的模拟终端接受并处理用户输入(通过键盘/鼠标事件),但它也应该接受其他方式的输入。例如,您可以有一个发送“ls”命令的按钮,并带有一个用于“Enter”效果的新行。
我意识到,像shellinabox这样的库服务于网页,但不支持对套接字流的干预。还有诸如湿的解决方案等等。为了完整起见,我想提供一些链接,希望有人指出我可能走在正确的轨道上:
- https://xtermjs.org/
- https://en.wikipedia.org/wiki/Web-based_SSH
- https://github.com/tsl0922/ttyd
- https://goteleport.com/
- https://www.bastillion.io/features.html
- https://github.com/liftoff/GateOne
- https://github.com/maxmcd/webtty
- https://guacamole.apache.org/
- https://cockpit-project.org/
- https://zero.pritunl.com/
- https://github.com/shellinabox/shellinabox
- https://www.xtontech.com/resources/faq/pam-privileged-ssh-sessions/secure-ssh-sessions-in-a-web-browser/
- https://resources.rescale.com/introducing-in-browser-ssh/
- https://medium.com/codingtown/ssh-web-console-21e87b611674
- https://github.com/ankitvadariya/ssh-client-connection
- https://github.com/butlerx/wetty
- https://github.com/chjj/tty.js
- https://anyterm.org/
- https://www.shellvault.io/ https://pypi.org/project/webssh/
- https://old.reddit.com/r/selfhosted/comments/ep149a/webbased_ssh_client_similar_to_shell_ngn/
- 如何使用 xterm.js 创建基于 Web 的终端以通过 ssh 连接到本地网络上的系统
我意识到我把我的问题展开了一点,但希望我能够解释我的挑战是什么。我觉得我可以以某种方式利用合成事件将输入传递给基于 Web 的终端,但不幸的是,我缺乏关于这样一个系统的高级知识来将所有这些放在一起。我将不胜感激有关如何实现这些目标的任何指示。
提前致谢!