辛宝的玄酒清谈!

A Solo Place.

辛宝Otto

Be a Happy Man

最近在学 Nuxt.js

11-速通 JSJ 588 介绍 Socket Supply 构建桌面、移动应用,基于 UDP 的 P2P 方案

收听方式

内容

本期是速通 JSJ  588 播客 《How to Build Peer-to-Peer Mobile and Desktop Apps with Socket Supply

嘉宾是:你不知道的js 作者,目前在 Socket Supply

目前在 advocating for the open web platform 倡导开放网络平台

介绍的这个 Socket Supply 的工具,希望一套代码,支持不同的平台 one code base, solve the problem with kind of the multi-platform.

web 技术构建桌面、移动端应用,从十几年前开始看,已经有了一些玩家:

  • PhoneGap -> apache cordova
  • nativescript / ionic / react native / tauri / electron

都在试图创建 runtime 包装 web 应用,来实现 app 在不同的原生平台处理。Socket Supply 也加入了其中,提供了开源的运行时通过 open runtime , warps around a web app like a  pwa 从而实现上架各平台。

Capacitor建立在Cordova上,这是一个15 +年前的代码库,专为移动设备编写,尽管它确实将Electron用于桌面,但这正在采购整个第二个项目,并且两者结合起来会产生大量的复杂性。Socket 是针对移动、桌面、无头和 Web 从头开始构建的,发明了尽可能少的新 API。更重要的是,Socket专注于采用CSP等Web标准来沙盒原生API,并实现点对点等现代网络。

本产品的特点:

  • 嫌弃人家老,有历史包袱,说自己新。这是特点的一部分,另一方面,网络部分有创新,独一无二的,是 P2P 网络,不鼓励和前端分开的独立后端。
  • 不支持分离的后端进程,就放到 web view 中就完事,所以体积非常小,比 electron / tauri 要小的多。
  • 这个运行时有完整的的文件访问、蓝牙、网络等。不能在浏览器里完整使用网络,因为 api 不允许
  • 网络协议这里,设计了完整的 serverless p2p 协议,真正的无服务器,由 socket 交流,而不需要服务端支持。
  • 做 p2p 的有很多,他们搞了一个协议,真正实现0服务器指令。发现网络通过 udp

为啥是一个 game changer?因为现在的应用都需要后端,需要数据库、存储等。

商业模式介绍。作为基建不需要付费,如果愿意支付分析工具的专业知识,客户分析、性能分析等。为更专业的技能付费,更方便的技能,比如一键部署到商店等。

目标客户是谁,所有公司,大公司,小公司?

都可以用,可以同时使用。全面上云,支付的费用很高。增加点新的支出,同时运行两种架构,是可行的,做 ab 测试,最后结果可能是大幅减少的一些云服务。

从 s3/db/function 等迁移到 p2p ,细节很多。从实际上看,从云端转为 p2p 需要更长的时间来迁移,也需要 a/b 并行来操作。

I think this is way beyond the depth of what we should get to on ths podcast.用了播客所不能承载的技术细节,听不懂。

使用到了 Web3 技术吗?

没有使用 web3 的技术,更像是 web3 技术之前的方案,或者叫 web 2.5

用到了 webscoket/web rtc 是吧?

没有。web stream / web socket / webrtc 不能满足他们建立 p2p 的要求,所以从基础上就是完全使用的 udp 的方案。

ipv6 是我们的救世主吗?

答案是不行, ipv6 的 nat 遍历很糟糕,至少是基于 udp 的 p2p

他们对 local first 有极大的热情,组建了一个社区。localfirstweb.dev

Q: GPT请告诉我,基于 udp 的 p2p 网络,大概什么样,从技术和使用场景上做一个解释。

基于UDP的P2P网络是一种点对点(Peer-to-Peer)网络架构,其中通信使用UDP协议进行数据传输。与传统的基于TCP的P2P网络相比,UDP更适合实时性要求高、带宽要求低的应用场景。

技术上,基于UDP的P2P网络通常采用NAT穿越技术,以克服NAT(网络地址转换)对P2P通信的限制。NAT穿越技术可以通过使用中继服务器或者使用UDP打洞等方式,使得位于不同私有网络中的节点能够直接通信,而无需通过公网IP地址。

使用场景上,基于UDP的P2P网络适用于以下情况:

  • 实时通信:UDP协议具有低延迟和高实时性的特点,适用于实时音视频通话、在线游戏等需要快速传输数据的应用场景。
  • 大规模文件共享:P2P网络可以将文件分割成小块,并通过多个节点同时上传和下载,提高文件传输速度和可靠性。
  • 媒体流传输:基于UDP的P2P网络可以用于流媒体传输,如直播、视频点播等,通过多个节点同时提供媒体数据,减轻服务器负载。
  • 去中心化应用:基于UDP的P2P网络可以用于构建去中心化的应用,如区块链、文件存储等,通过节点之间的直接通信实现数据共享和交换。

需要注意的是,基于UDP的P2P网络相对于基于TCP的P2P网络来说,由于UDP协议的特性,可能会面临一些挑战,如数据包丢失、乱序等问题,因此在设计和实现时需要考虑数据可靠性和传输效率的平衡。