xterm实现单个页面多个webssh

xterm实现单个页面多个webssh,第1张

本文demo主要实现一个页面可以有webssh窗口,前端部分主要利用 xterm 通过 socket.io-client 和后端通信,后端部分使用 nodejs+utf8+socket.io+ssh2 。

基于vue项目,前端主要依赖包: xterm xterm-addon-fit socket.io-client ,使用前请install。

前端主要依赖包: utf8 ssh2 socket.io ,使用前请install。

ssh2 用来实现nodejs和服务器进行连接和通信。

utf8 用来实现服务器返回的命令执行结果解码。

socket.io 用来实现后端和前端ws全双工通信,通过传入不同的socket-msgId来实现信息标识,就可以实现单页面多个webssh只利用一个websocket。后端使用 ws 这个库也可以实现同样的效果,只是使用 ws 库要达到这个效果,客户端会创建多个ws实例而已。

1、浏览器resize后,webshell窗口宽高自适应、命令显示的问题;

本文demo主要实现一个页面一个webssh窗口,前端部分主要利用 xterm 通过 原生ws 和后端通信,后端部分使用 nodejs+utf8+ws+ssh2 。

基于vue项目,前端主要依赖包: xterm xterm-addon-fit ,使用前请install。

前端主要依赖包: utf8 ssh2 ws ,使用前请install。

ssh2 用来实现nodejs和服务器进行连接和通信。

utf8 用来实现服务器返回的命令执行结果解码。

ws 用来实现后端和前端ws全双工通信。

1、浏览器resize后,webshell窗口宽高自适应、命令显示的问题;

2、设置了cols或者fitAddon.fit()当一行字符超过80个后,会替换现在的内容问题。

更多内容请点击 我的博客 查看,欢迎来访。

本教程基于《Django使用Channels实现WebSocket消息通知功能》

xterm.js : 前端模拟 shell 终端的一个库,当用户每输入一个键,就向后端发送该数据

paramiko : Python 下对 ssh2 封装的一个库,可以使用他来远程连接主机

创建app。名为 webssh

将应用添加到 settings.py

修改应用下的 apps.py

修改应用下的 __init__.py

访问 http://127.0.0.1/webssh/ 可以连接到主页

apps/webssh/consumers.py

apps/webssh/routing.py

合并多个应用的url

遇到的问题:用协作连接时,用户加入到一个通道组,往这个通道组发送命令,这个通道所有用户都能收到,来实现协作的功能,但是从 self.ssh_channel 接收返回的数据,可能会存在和预想的不同,特别是 top 命令。示例如下,不知道怎么解决了!!!

参考链接: https://github.com/huyuan1999/django-webssh

https://www.cnblogs.com/52op/articles/9327733.html 【gevent库】


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/27982.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-02-18
下一篇2023-02-18

发表评论

登录后才能评论

评论列表(0条)

    保存