產品案例
StarShare
產品設計/系統開發

開同一個網址,就看到同網路的人,點一下把檔案送過去。位元組走瀏覽器之間的直連,伺服器不經手檔案。
01
作品難題
AirDrop 只活在蘋果裡,Quick Share 只活在 Android 與 Windows 的某幾個組合。跨系統傳一份簡報,現實是丟上雲端再跟權限和過期連結搏鬥。難的不是把位元組送出去,是在各種網路條件下,仍然能對使用者說清楚為什麼送不到。
02
我的職責
- 產品設計與全端開發:前端、信令服務、自架部署。
- WebRTC DataChannel 傳輸、分塊串流與斷線續傳。
- 房間模型:同網路自動成列、四碼與 QR 作為發現備援。
- 以 Docker Compose、Caddy 與 coturn 讓公開 demo 和自架跑同一份碼。
03
系統與決策
瀏覽器信令服務WebRTC DataChannelcoturn 轉送對方瀏覽器
- 「看不見對方」和「看得見但傳不過去」是兩種失敗,分別交給四碼/QR 與 TURN,不混用同一套說詞。
- 完整性用分塊摘要根驗證,不用整檔 SHA-256:整檔雜湊得把檔案讀進記憶體,而那正是大檔讓分頁崩潰的原因。
- 接收端把收滿的區塊寫進 OPFS 暫存檔,長度永遠是區塊的整數倍,續傳才能從乾淨的邊界接回去。
- 信令服務不碰檔案位元組;群組雲只記得檔名、大小與到期時間,檔案留在上傳者的瀏覽器裡。
- 協定升級後,舊版用戶端一律以 unsupported 拒收,寧可明講不相容,也不讓它誤報成功。
04
成果
- 送達判定
- 接收端算出的分塊摘要根相符之後,發送端才顯示送達。
- 斷線續傳
- 接收端回報已落地的位元組,發送端從區塊邊界接續,不從頭重傳。
- 群組雲
- 拖到雲上掛 30 分鐘,同圈的人自己下載,同時最多四條。上傳者關掉分頁,雲就消失。
- 原生 App
- 開發中。目前上線的是網頁版,開同一個網址即可使用。
05
製作名單
個人開放原始碼專案,MIT 授權。
- 產品設計與開發
- 陳俊儒 Jacki Chen