upterm改造(二)-支持VSCodeWeb
接上文中, 我们已经支持本地的VSCode
客户端连接, 但是我感觉这还不完整, 毕竟VSCode
已经推出了web版, 比如vscode.dev以及github.dev. 未原生运行VSCode
设备, 只要有浏览器支持就可以使用, 并且也支持iPad或是安卓平板这类设备,
因此我就继续深入改造了一下, 目前已经能提供网页版的VSCode功能:
在桌面端, 你完全不需要下载任何软件, 打开浏览器即可拥有全功能的VSCode, 适合手头没有电脑需要紧急借用别人电脑时的情况.
在iPad端, 虽然是个网页程序, 但是它在添加到桌面后已经能较为完美的融入生态, 并且提供的终端足够碾压iOS上的其他SSH工具.
服务器在香港, 配置也略低, 可能偏慢, 欢迎体验. 有关技术细节我也会再写一篇博客说明, 主要复用了upterm与uptermd通信使用的SSH隧道.
开启服务
1 | bash <(curl -sL http://corvo.myseu.cn/scripts/upterm-web.sh) |
PC端使用以及效果
使用浏览器打开后会预加载一些资源, 加载完成后, 可以点击按钮进入, 我建议你安装为软件后使用, 因为网页中的快捷键比如ctrl-w
可能会触发页面关闭而不是编辑框关闭
在Edge中安装
只需要点击作为应用安装即可:
在Chrome中安装
Chrome中需要创建快捷方式, 并勾选在窗口中打开:
体验到VSCodeWeb
你可以使用VSCode的全部功能,
也可以打开一个终端来用:
iPad端使用以及效果
将地址拷贝之后在safari中打开
iPad也可以扫描电脑地址栏中的二维码打开响应链接
iPad桌面支持
只能在safari中使用, 但是我十分推荐. 毕竟为了Add to Home Screen
的优雅效果, 我改了很多…
iPad桌面体验
就算是但从终端效果来看, 我觉得都能甩termius
几条街, 更不用说完整的VSCode支持了.
我没有秒控键盘, 只是拿普通的蓝牙键盘试了一次, 换成Win的蓝牙模式, 就可以方便使用Esc键了, 尤其适合Vim用户,
基础的开发以及运维需求看起来完全没有问题, tmux这类工具也毫无压力.
应该算是扩展了iPad的代码生产力吧.
功能优化
- 静态文件的加载很慢, 可能要有几十秒, 所以我不得不单独写了一个加载页面. 这个地方很需要CDN支持
- 我在本地开发时无延迟, 但是实际交互上还是存在一点延迟问题, 还是服务器位置问题导致的
- 允许映射端口, 目前端口映射已经可以使用了, 但是还没能自动化. 我希望有插件能弹出提醒用户可以打开对应的端口
- 提供管理页面, 允许用户查看自己当前可以使用的VSCodeWeb服务
- 利用类似okteto等的公共Kubernetes, 允许用户在上面直接搭建和使用VSCodeWeb服务
- 结对编程? 分享链接时, 其实是使用了同一个 VSCodeWeb 服务端, 那么从理论上讲, 同个服务端上的结对编程完全有可能实现
- 考虑允许
vscode.dev
或是github.dev
等网站直连一个VSCodeWeb服务, 最大程度的复用CDN资源
其中, 1,2
涉及到用户体验的部分, 是可以氪金解决的, 不知道有没有大佬愿意赞助一波
其中, 6,7
的功能会涉及到对VSCode代码的大量改动.
我没有详细了解Gitpod
未来的发展方向, 我猜想结对编程可能是个点, 并且使用VSCodeWeb
实现是较为合适的一个技术选型. Gitpod也很可能会这么做.
虽然微软提供用户使用Remote-SSH
功能, 但是这个插件并未开源, 这就导致了我们基于Remote-SSH
开发功能受到一定限制,
最直接的就是端口转发功能, 还有多个ssh_config
文件的支持. 我相信Gitpod
也一定遇到过类似这样的问题.
VSCodeWeb
代码包括在VSCode
源码中, 无论是改造, 还是加个插件都是切实可行的.
与Gitpod的关系和区别
虽然我一直有提到Gitpod
, 但我希望读者能够认识到, upterm与Gitpod是有区别.
- upterm拥有更加开放和底层的功能, 它是一个完善的基础工具, 也可以作为Gitpod的底层实现, 它不会主动提供机器供用户使用, 也不需要你登录Github账户
- Gitpod从开发逻辑上来说, 是更加希望用户使用Gitpod的方式来每次启动新的Pod, 并且在它维护的Pod中启动VSCodeWeb服务. 它提供了完整的服务, 类似一个SaaS平台.