收聽方式#
內容#
本期是速通 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 協議的特性,可能會面臨一些挑戰,如數據包丟失、亂序等問題,因此在設計和實現時需要考慮數據可靠性和傳輸效率的平衡。