type
Post
status
Published
date
Jul 4, 2022
slug
live_share
summary
使用Vscode Live Share直接模式进行协同编程,以本地化方式降低延迟,同时提供异地连接方案(zerotier)
tags
效率
category
技术分享
icon
password

背景

之前在课堂上看老师演示的code with me,并没有如愿实现
事后独自研究了下这个新技术,发现相当有趣,可以互相协同
但是苦于code with me的服务器在墙外,如果用科学上网,难免高延迟,各种掉线
又研究了下jb家的space和fleet,发现协同编程已成趋势,但是对本地化这种理应实现的方案,都并没有很好的实现,code with me的本地化方案又有着高额费用
然后现在就想着能不能用自己的服务器中转,研究了下vscode的协同方案
默认是采用的国外云端连接,但是那样延迟颇高
仔细一查,可以自己建服务器直连,或者本地连接,而且免费,完美符合要求
 
 

效果实现

通过我先输入1,朋友看到我输入的1后输入2,我在看到2之后输入1,进行一个简单的延迟测试,效果非常好
notion image
 
 

实现技术

协同工具

Vscode

协同插件

Vscode Live Share插件

国内化互联方案

  • 服务器连接(异地连接)
Zerotier 根服务器部署+Zerotier客户端互联
  • 直连(本地连接)
采用手机热点,交换机等,使得互相能ping通即可
校园网有AP隔离,无法互相ping通
 

Vscode连接环境配置

官网文档链接

插件部署

下载Live Share三个插件,并安装
notion image
将Live share连接模式修改为直接连接
文件→首选项→设置→搜索liveshare.connectionMode
修改为direct 直接模式
notion image
根据官方文档,三个模式的工作原理分别为
模型
主机行为
来宾行为
Auto
主机的协作会话接受安全的、经过身份验证的直接连接或云中继连接。
尝试使用直接连接,如果失败则回退到通过云中继。
直接
主机的协作会话仅接受经过身份验证的安全直接连接。
尝试使用直接连接,如果无法连接,则停止。
中继
主机的协作会话不允许直接连接。 主机的计算机上未打开任何端口。
始终通过云连接。

连接模式的要求

所使用的连接模式将规定 Live Share 运行所需的特定端口和 URL。
模型
客户端访问要求
故障排除
直接
主机:需要打开 5990 - 5999 范围内的端口以接受入站本地网络连接。来宾:对同一端口上的主机的网络路由和出站访问。
确认桌面防火墙软件没有在此端口范围内阻止“vsls-agent”,并且可以相互 ping 成功。 虽然 Windows 和其他桌面软件应该在代理首次启动时提示你,但我们已经看到了组策略阻止这种情况发生的情况,而你需要手动添加条目。 可能还会遇到需要解决的代理问题
所以需要打开防火墙的5990-5999端口

防火墙配置

  • 简单办法
直接把防火墙关了,万事无忧
下方为教程
  • 安全办法
通过高级设置,控制防火墙出入站规则
防火墙win10入站出站规则怎么设置_win10怎么设置防火墙的入站规则和出站规则_U教授
更新时间:2021-06-02 15:36:42 作者:zhong   在 win10系统 里,我们在浏览外网的时候,会发现外网是无法访问的,这是就需要设置防火墙的入站出站规则,设置好之后就可以继续浏览外网,那么win10怎么设置防火墙的入站规则和出站规则呢,下面小编给大家分享win10防火墙入站出站规则的设置方法。   解决方法:   1、首先点击开始,选择设置。      2、在设置界面直接搜索防火墙,然后进入。      3、在防火墙页面选择高级设置。      4、在防火墙高级设置界面可以看到入站和出站规则,可以直接左上角选中入站或出站然后右键新建规则,也可以右侧直接选择新建规则。      5、然后第一步是创建规则的类型,根据需求选择,我这里以创建远程桌面(3389端口号)为例,所以选择端口,再下一步。      6、然后设置协议和端口,远程桌面就是需要TCP协议和3389端口,然后下一步。      7、然后选择操作类型,这里是允许连接,当然也可以阻止规则,就是阻止连接。      8、然后是配置规则使用范围,这个根据你的实际需求。      9、最后是设置规则名称和描述,要设置明白,因为防火墙中很多规则,随便设置的话等下次再想更改很可能就找不到。      10、在规则池中就可以看到新建的规则了,出入站规则的设置方法都是一样的。      以上就是win10防火墙入站出站规则的设置方法,有不知道怎么设置的话,可以按上面的方法来进行设置。
防火墙win10入站出站规则怎么设置_win10怎么设置防火墙的入站规则和出站规则_U教授
  1. 入站规则→新建规则→把5990-5999端口打开
  1. 入站规则→往下拉找到文件和打印机共享(回显请求 - ICMPv4-In)将这项3个值改为启用,方便之后用ping进行连通性测试
notion image
 
至此,连接环境配置完毕了
 
 

本地互联环境(与服务器二选一)

用热点/交换机连上后
拿到互相的ip地址,用命令行ping一下,如果能连通即可,如下图ip为相互主机的ip
指令格式:ping xxx.xxx.xxx.xxx
notion image
 
 

服务器互联环境(与本地二选一)

参考链接

环境需求

具有公网ip的服务器

服务器配置过程

  1. 安装docker(过程持续一段时间) 理论上说你不需要知道他是个啥
    1. curl -sSL https://get.daocloud.io/docker | sh
  1. 从gitee仓库下载docker配置文件
    1. git clone https://gitee.com/Jonnyan404/zerotier-planet
  1. 进入下载的项目文件夹
    1. cd zerotier-planet
  1. docker启动zerotier-planet
    1. sudo docker-compose up -d
  1. 访问 http://ip:4000 访问web界面了
    1. (记得防火墙开放4000端口,云服务器的去云服务器开放端口)
      默认用户名:admin 默认密码:mrdoc.fun
  1. 在输入完默认账号密码后,会让你修改一次用户名和密码,修改为自己的
  1. 点击Add network 配置你的网络名称
    1. notion image
  1. 创建后点击Easy setup [也就是在网络名称下方的第二个按钮] 进入配置界面
  1. 配置虚拟ip段,供之后分配ip,点击submit提交,如果不知道怎么配置,按下面的即可
    1. notion image

客户端配置

  1. 下载客户端,选择对应的平台下载
  1. 安装后,打开,默认在后台通过右键修改配置连接网络
  1. 通过join new network加入网络
    1. notion image
  1. 输入之前服务器端配置好的网络中的ID,即可加入连接,加入过程中,会自动创建一个新的网络,系统会进行提示,务必准许
    1. notion image
  1. 加入连接后,需要在服务器web界面,将对应用户Authorized打钩,准许用户加入,过一段时间后将会分配IP地址,通过这个IP就可以互相ping通了,记得用命令行命令进行测试
    1. notion image
 
 

插件使用方法

插件分为分享(share)端和加入(join)端
使用连接前,一定要保证互相能ping通,不然无法互联

插件界面

notion image
分享端直接点击share即可创建房间
加入端点击Join,通过share端的URL加入房间

分享端

点击share后,会进入新建房间,点击share server,出现上方弹窗,填写入5990-5999端口之一,进行端口开放,供他人连接,回车两次后即可创建成功
notion image
点击invite participants进行邀请他人,出现下方弹窗后,URL会被自动复制入你的剪切板,这时候将URL粘贴给他人即可
notion image
该URL临时使用微软的连接平台进行连接,不会对后续直连产生影响

加入端

加入端拿到URL后,点击Join,将URL复制到上方弹窗,回车即可加入
notion image
之后不出意外就可以互相协同编程了
KMP算法Rsnapshot 系统快照方案