Joggle的研发背景


2023年10月

又经历了1年时间的打磨,joggle的稳定性得到了进一步提升。同时开发了增值服务功能,比如说设备上下线记录,后来又开发了 设备下线邮件提醒功能,整个围绕服务稳定性提升开发。最近又开发自定义域名功能,能够绑定自己的域名对外服务,同时也支持 https方式,上传自己的证书到joggle平台即可实现。在商业化方面,joggle平台的固定服务用户2个,其中一个用户带来了大流量冲击 日流量达到惊人的50GB,不过截止目前平台也没有崩溃过。在研发方面,新增了赚钱宝固件支持joggle,可以做到更加低成本的使用joggle。

2022年10月

工作最难找的1年,很多公司裁员。就业形式严峻,在家里也没有闲着也是可能比上班还忙。本月对joggle平台增加了VIP包月功能,这样客单价可以提高, 但是我不希望按需够买这种方式就放弃了,于是在兼容原来的按需购买的前提现,我设计了一套VIP资源套餐功能。为了区分自助购买和VIP权益购买, 我设计了一张权益清单表,用户在使用权益购买时会更新权益清单。VIP业务只关系VIP的购买逻辑不用关心资源的释放,原有的资源释放逻辑不用改变。 另外管理后台增加了VIP套餐管理、细化了用户详情功能。已经实现了私有部署的案例2个,技术培训应该是未来的变现方式之一。

2022年9月

在成都9月大部分时间都在居家办公,有更多的时间来迭代joggle。增加了多通道、切换通道、 稳定性优化、支付宝接入等,目前P2P稳定性不行,还需要时间优化。另外在B站做视频推广迎来了一批付费用户,他们对稳定性提出了问题, 这些问题都得到的解决。逐步开发管理后台功能,目前仅仅支持查询,通道管理、用户管理、设备管理、订单管理等功能。

2022年8月

Joggle平台支持更多的穿透特性,相比如说任意门能够随时共享自己的文件、P2P转接TCP协议等功能,这些都还在试验阶段 但我相信通过时间成本能够把这些做得非常稳定。

2022年6月到7月

Joggle开始商业化转变,提供商业化的服务。增加了端口 域名开放购买功能。同时流量也需要购买,与其他平台的区别则是按需使用,不需要强制性购买一个月或者几个月。 支持查看自己购买的订单记录。

2022年1月到5月

Joggle增加节点切换功能,能够基于界面切换客户端的使用通道,目前官方增加了两个通道,一个美国的,一个国内西南片区的。由于这些服务器的付费模式不同, 因此在费用上会有差异,差异化的管理在商用通道上制定灵活的价格策略,因此在服务通道上会做价格信息,当然免费的试用通道也不会关闭的。 在完善功能后,再进入推广阶段。

2021年5月到12月

Joggle项目开始步入正轨,新增加了流量统计功能、流控、邀请用户赠送流量,这个还是原因golang语言开发的越来越深入,找到了ngrok流量拷贝的切入点。能够准确的采集输入与输出流量 于是就开发了流量统计功能,每个月链接数量就达到20多万个,目前活跃用户并不对多。接下来将打造免费用户流量限制功能,为合法用户提供收费服务。 投入服务器,投入人力去做这件事,那么就一定要坚持下去,相信未来可期。

2021年3月到4月份

我做了一个艰难的决定 ,将java开发的客户端完全放弃转向使用golang开发客户端。最致命的原因是Java的依赖包太多,很多并不需要的东西都在jar包里面,导致了体积过大200多MB 。为了提高bullet客户端的下载体验,于是学习golang,基于ngrok上做客户端的修改。让ngrok客户端支持Bullet反向控制协议。 从现在来看这个决定是正确的,在这方面还是很成功。主要有一下 1、golang开发的客户端体积更小,支持多种CPU架构,运行效率更高; 2、通过docker buildx 可以构建多CPU架构的镜像;

还有个原因要转golang,因为我打算利用玩客云ARM Linux硬件做Joggle的客户端环境,由于玩客云内存只有1G,存储8G,所以我需要劲量的降低内存的占用。 最佳的选择就是golang,利用他跨平台的特性,可以实现各种类型客户端程序的编译。

以前

这个要从我对内网的访问需求开始,因为我家里有几台Macmini,部署了一些存储服务,需要上班的时候也能访问到内网。 当时我有一套faceinner的框架代码,前端是angular1.x,后端是Java,数据库用的mongodb,实现了webrtc和在线聊天的应用, 还有心愿墙功能,但是我没有更好的Idea来扩展新的功能所以这个项目就搁浅很久。

接触到ngrok,刚开始我使用的命令行的方式跑ngrok,偶尔会遇到挂掉的问题。觉得写脚本方式配置比较麻烦, 于是我就开始寻找ngrok有没有更好的方式启动,于是在ngrok官网找到了ngrok -config的配置方式。顺着时间的流逝 ,发现ngrok的作者已经开发了2.0版本,1.7版本可能就是他用来获取名气的开源产品,已经很多年没有更新了。 虽然作者没有更新, 当时 我的想法是如果有问题大不了就学习golang去自己修复。然而我最初的想法还是使用Java重构一套Ngrok,确实 我成功重构了一个版本出来,问题特别多极不稳定,仅支持http。这个就不太好了。最终还是放弃了这种重构思路。

基于faceinner项目结构来使用我比较擅长的java实现web管理界面控制ngrok是一个不错的实现方案。于是首先我实现了一个java调用ngrok的Demo方法。 这个操作成功了以后,由于ngrok是客户端配置二级域名映射的,于是我就开始使用websocket来保持java客户端和服务器端的链接,客户端控制ngrok命令,ngrokd作为 通道服务,通道服务去服务端做校验域名权限。这样形成了一套闭环操作。完美的解决了客户端的域名权限问题。

域名权限问题解决了新的问题又来了,那就是客户端的编码可以随意修改。新的方案来处理就是通过第一次连接服务器端生成一套秘钥,绑定到设备。这样每次设备链接到ngrokd的时候会校验他的 秘钥是否匹配,这样客户端就不能随意的定制设备编码了。客户端编码对应的秘钥错了是不能正常使用Bullet穿透的。

后来我了解到gitbook这款神器,就开始使用它作为bullet的文档工具,前期的文档都写的不太全,后期慢慢补上的。在修补的过程中 也发现有很多的问题,只有抽时间去修复它。

results matching ""

    No results matching ""