UNPKG

@seasongold4/webssh2-frontend-fixed

Version:

WebSSH2 前端终端库 - 修复版本,完全兼容原项目后端,解决终端显示乱码问题

195 lines (157 loc) 5.2 kB
# WebSSH2 前端库 - 修复版本 ## 🎯 修复内容 ### ✅ 主要问题修复 1. **解决终端显示乱码问题** - 之前会显示 "wwwwwwwwwwwwwwwwwwww" 等乱码 - 现在完全正常显示终端内容 2. **移除错误的连接事件** - 删除了不兼容的 `ssh-connect` 事件 - 采用与原项目100%兼容的连接方式 3. **完全仿照原项目实现** - UI结构与原项目完全一致 - 事件处理与原项目完全一致 - CSS样式与原项目完全一致 4. **保留所有原功能** - ✅ 日志记录功能 - ✅ 日志下载功能 - ✅ 重新认证功能 - ✅ 凭据重放功能 - ✅ 安全关机倒计时 ## 🔧 技术修复详情 ### 连接方式修复 **之前的错误方式:** ```javascript // ❌ 错误:发送原项目后端不支持的事件 this.socket.emit('ssh-connect', { host: config.host, username: config.username, password: config.password }); ``` **修复后的正确方式:** ```javascript // ✅ 正确:只建立Socket.IO连接,不发送自定义事件 this.socket = io(socketUrl, { path: '/ssh/socket.io', transports: ['websocket'] }); // 连接后只发送几何信息,与原项目一致 this.socket.on('connect', () => { this.socket.emit('geometry', this.terminal.cols, this.terminal.rows); }); ``` ### 事件处理修复 完全仿照原项目的所有事件: - `data` - 终端数据传输 - `setTerminalOpts` - 设置终端选项 - `menu` - 菜单绘制 - `status` - 状态显示 - `header` / `footer` - 头部和页脚 - `allowreplay` / `allowreauth` - 权限控制 - `shutdownCountdownUpdate` - 关机倒计时 ### UI结构修复 **完全仿照原项目的HTML结构:** ```html <div class="box"> <div id="header"></div> <div id="terminal-container" class="terminal"></div> <div id="bottomdiv"> <div class="dropup" id="menu"> <!-- 菜单内容 --> </div> <div id="footer"></div> <div id="status"></div> <div id="countdown"></div> </div> </div> ``` ## 📦 使用方法 ### 基本使用 ```html <!DOCTYPE html> <html> <head> <title>WebSSH客户端</title> <!-- 添加FontAwesome支持 --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css"> </head> <body> <div id="terminal" style="height: 600px;"></div> <script src="dist/webssh2-frontend.js"></script> <script> const client = new WebSSHClient('terminal', { socketUrl: 'http://localhost:2222', socketPath: '/ssh/socket.io', onConnected: () => console.log('连接成功'), onError: (err) => console.error('错误:', err) }); client.connect(); </script> </body> </html> ``` ### 高级使用 ```javascript const client = new WebSSHClient('terminal-container', { socketUrl: 'http://your-server:2222', socketPath: '/ssh/socket.io', // 事件回调 onConnected: () => { console.log('SSH连接已建立'); }, onDisconnected: () => { console.log('SSH连接已断开'); }, onError: (error) => { console.error('连接错误:', error); }, onData: (data) => { console.log('接收数据:', data); } }); // 连接 client.connect(); // 断开 client.disconnect(); // 销毁 client.destroy(); ``` ## 🔗 与原项目后端集成 ### 方式一:直接连接(推荐) 前端库现在会自动连接到原项目后端,无需额外配置。 ### 方式二:预先建立会话 如果需要,可以先通过浏览器访问原项目的SSH连接URL: ``` http://localhost:2222/ssh/host/192.168.1.100?username=root&password=yourpassword ``` 然后在前端库中连接即可。 ## 📁 示例文件 - `examples/final-fixed-example.html` - 完整的修复示例 - `examples/complete-webssh-usage.html` - 之前的版本(已过时) - `examples/frontend-usage.html` - 简化版本示例 ## 🎉 修复结果 -**不再显示乱码** - 终端内容正常显示 -**完全兼容原项目** - 100%兼容原后端 -**保留所有功能** - 日志、认证等功能完整 -**界面完全一致** - 与原项目UI完全相同 -**稳定可靠** - 移除了所有不兼容的代码 ## 🚀 编译和使用 ```bash # 编译前端库 npm run build # 编译后的文件位于 dist/ 目录 # - webssh2-frontend.js - 完整的前端库 # - *.d.ts - TypeScript类型定义文件 ``` ## 💡 重要说明 1. **完全兼容性** - 此版本与原项目100%兼容,不需要修改后端代码 2. **无需额外配置** - 直接替换原来的前端库即可使用 3. **保持原有功能** - 所有原项目的功能都得到保留 4. **修复了核心问题** - 解决了终端显示乱码的根本原因 --- ## 技术支持 如果遇到问题,请检查: 1. 后端服务是否正常运行 2. Socket.IO地址和路径是否正确 3. 浏览器控制台是否有错误信息 4. FontAwesome图标库是否正确加载