基于 NoCortY的项目 WebSSH修改:
- 升级xterm到4.x
- 自适应宽高
- 心跳检查
- 断开自动重连
NoCortY的博客:使用纯Java实现一个WebSSH项目
篇幅限制,这里只放出效果及关键代码。完整代码见 mervynlam/Webssh-Java - Github
效果
自适应宽高
心跳检查
断开自动重连
关键代码
自适应宽高
前端
//terminal 大小改变
function resizeTerminal() {
//默认字体大小的宽高和行列计算比例
var c = parseInt($("#outerDiv").width() / 9);
var r = parseInt($("#outerDiv").height() / 17);
//前端调用xterm的resize方法
term.resize(c, r);
//调整terminal的大小后,需要把行列传给后台
client.send({
"operate": "command"
, "command": ''
, "cols": c
, "rows": r
});
};
后台
//实体类添加行列宽高字段
private int cols = 80;
private int rows = 24;
private int width = 640;
private int height = 480;
//处理客户端发送的请求
@Override
public void recvHandle(String buffer, WebSocketSession session) {
ObjectMapper objectMapper = new ObjectMapper();
WebSSHData webSSHData = null;
try {
webSSHData = objectMapper.readValue(buffer, WebSSHData.class);
} catch (IOException e) {
logger.error("Json转换异常");
logger.error("异常信息:{}", e.getMessage());
return;
}
String userId = String.valueOf(session.getAttributes().get(ConstantPool.USER_UUID_KEY));
if (ConstantPool.WEBSSH_OPERATE_COMMAND.equals(webSSHData.getOperate())