接上文中, 我们已经支持本地的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的代码生产力吧.

功能优化

  1. 静态文件的加载很慢, 可能要有几十秒, 所以我不得不单独写了一个加载页面. 这个地方很需要CDN支持
  2. 我在本地开发时无延迟, 但是实际交互上还是存在一点延迟问题, 还是服务器位置问题导致的
  3. 允许映射端口, 目前端口映射已经可以使用了, 但是还没能自动化. 我希望有插件能弹出提醒用户可以打开对应的端口
  4. 提供管理页面, 允许用户查看自己当前可以使用的VSCodeWeb服务
  5. 利用类似okteto等的公共Kubernetes, 允许用户在上面直接搭建和使用VSCodeWeb服务
  6. 结对编程? 分享链接时, 其实是使用了同一个 VSCodeWeb 服务端, 那么从理论上讲, 同个服务端上的结对编程完全有可能实现
  7. 考虑允许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平台.