webssh的关键点:
- 选择websocket协议,http不适合
- webssh server端需要能:
- select websocket的输入,一旦有输入,就转发到ssh server
- select ssh server的输出,一旦有输出,就转发到websocket
- 要实现上面两点:
- 要么自己实现websocket server,因为:
- select websocket的输入是websocket server的事情,而select ssh server 的输出是应用逻辑的事情,无法在同一个select上检查这两个fd的事件
- 要么websocket server端语言支持多线程
- 要么自己实现websocket server,因为:
- 对于PHP语言,我们实现自己的websocket server比较麻烦,同时,PHP也不支持多线程,所以PHP实现webssh很难
- 对于Python语言,因为Python支持多线程,所以,这事儿就好办,jumpserver里面的webssh就是通过多线程实现的