基于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库】
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)