编辑虚拟机简单服务器代码,GitHub - caohuilin/vv: vv 编辑器,专注为经常在服务器、虚拟机、docker容器中修改代码或者配置文件的小伙伴提供本地coding新体验。...

vv 编辑器

ccdd4c4e08bd564294807e37e5c1ea02.png

68747470733a2f2f7472617669732d63692e6f72672f77616e676b656368756e2f76762e7376673f6272616e63683d6d6173746572

68747470733a2f2f676f7265706f7274636172642e636f6d2f62616467652f6769746875622e636f6d2f77616e676b656368756e2f7676

视频展示

项目简介:

该项目旨在为经常在服务器、虚拟机、docker容器中修改代码或者配置文件的小伙伴提供本地coding新体验。

你是否一直为修改服务器代码而困扰?无代码高亮,少之又少的快捷方式,一个不注意又写了一个莫名其妙的bug。

我不是资深的vim使用者,我只是一个追求完美和效率的偷懒者。

vv编辑器的想法就是我在偷懒的时候萌生的。

vv+ ‘filename’,你盯着的那个文件已经在你最喜欢的编辑器中打开

'command + s', 服务器已如你期望自动更新完毕

这种开发方式,相信你再也不会拒绝。

主要用到的开源库

google.golang.org/grpc grpc、protobuf

github.com/kr/binarydist bsdiff 的 go 语言实现

github.com/spf13/cobra CLI 界面

github.com/hanwen/go-fuse/fuse go-fuse

技术实现

目录挂载实现

增量传输实现

p2p 数据传输实现

测试过 https://github.com/vzex/dog-tunnel 这种 udp 打洞的方式,不过实测下来稳定性不够,某些网络不能成功连接。

于是改为尝试 frp 这种中间服务器中转的模式。

A -> 中转服务器

B -> 中转服务器

中转服务器 pipe 配对的 tcp, A -> B 成功建立连接。

这里存在一个问题是 A、B 和中转服务器的的时间间隔可能很长,等到成功配对的时候可能有 tcp 已经断掉了,建立的连接是坏的。

并且中转服务器不能私自往 tcp 里面写数据,所以没法提前检测连接是否断掉了。

最后改成 A -> 中转服务器 建立长连接, 然后中转服务器如果收到 B 的连接,就告诉 A 需要新起一个连接, 然后把 A 新起的连接和 B 的连接配置。

由于两个连接都是刚刚建立的,不会有超时问题。

这种方式的话问题是会慢点,因为要通知 A 去建立一个新连接, 解决方案很简单,A 需要新起连接的时候多发起一个,之后的连接就可以复用了。 如果多余的连接长时间等不到配对会主动断开。

A 和 B 配对成功了就可以随意通信了, 然后直接使用 grpc, 可以很方便的双向通信。

grpc 正常使用是需要一些hack的,正常是一个 server 负责 listen,一个 client 负责 dial。 这里实际上两边都是 dial, 需要自定义一个 listen, 如果成功建立一条到 B 的连接,则 Accept 一个连接给 grpc。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值