借助xterm.js、paramiko、Dwebsocket、SSH完成WebSSH在线编程
websocket:https://www.cnblogs.com/xiaonq/p/12238651.html
webssh:https://www.cnblogs.com/xiaonq/p/12243024.html
1.什么是WebSSH?
- webssh 泛指一种技术可以在网页上实现一个 SSH 终端。
- ssh终端:用来通过ssh协议,连接服务器进行管理
- 运维开发方向:堡垒机登录、线上机器管理(因为运维人员不肯能24小时携带电脑)
- 在线编程:提供一个编程环境
2.websocket(3w1h)
- 什么是websocket
- webSocket是一种在单个TCP连接上进行全双工通信的协议
- 客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。
- 浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输
- websocket与http区别
- http请求建立连接只能发送一次请求,不能有服务器端主动向客户端发送请求
- websocket建立的长连接,一次连接,后续一直通信,这样节省资源,可以有客户端发送请求给服务器端
- 远古时期解决方案就是轮询
- 客户端以设定的时间间隔周期性地向服务端发送请求,频繁地查询是否有新的数据改动(浪费流量和资源)
- webSocket应用场景?
- 聊天软件:最著名的就是微信,QQ,这一类社交聊天的app
- 弹幕:各种直播的弹幕窗口
- 在线教育:可以视频聊天、即时聊天以及其与别人合作一起在网上讨论问题…
- websocket原理
- websocket首先借助http协议(通过在http头部设置属性,请求和服务器进行协议升级,升级协议为websocket的应用层协议)
- 建立好和服务器之间的数据流,数据流之间底层还是依靠TCP协议;
- websocket会接着使用这条建立好的数据流和服务器之间保持通信;
- 由于复杂的网络环境,数据流可能会断开,在实际使用过程中,我们在onFailure或者onClosing回调方法中,实现重连
- websocket实现心跳检测的思路
- 通过setInterval定时任务每个3秒钟调用一次reconnect函数
- reconnect会通过socket.readyState来判断这个websocket连接是否正常
- 如果不正常就会触发定时连接,每4s钟重试一次,直到连接成功
- 如果是网络断开的情况下,在指定的时间内服务器端并没有返回心跳响应消息,因此服务器端断开了。
- 服务断开我们使用ws.close关闭连接,在一段时间后,可以通过 onclose事件监听到。